贴代码先:
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Schema;
using System.IO;

namespace XmlChecker

...{
class Program

...{
static void Main(string[] args)

...{
if (args.Length != 2)

...{
Console.WriteLine("usage: XmlChecker.exe xmlfile xsdfile");
return;
}
if (!File.Exists(args[0]))

...{
Console.WriteLine("xml file not exists!");
return;
}
if (!File.Exists(args[1]))

...{
Console.WriteLine("xsd file not exists!");
return;
}
XmlReaderSettings xsd = new XmlReaderSettings();
xsd.ValidationType = ValidationType.Schema;
xsd.Schemas.Add("", args[1]);
xsd.ValidationEventHandler += new ValidationEventHandler(xsd_ValidationEventHandler);
XmlReader xml = XmlReader.Create(args[0], xsd);
while (xml.Read())

...{

}
xml.Close();
xml = null;
Console.WriteLine("Check Complete!");
}

private static void xsd_ValidationEventHandler(object sender, ValidationEventArgs e)

...{
Console.WriteLine(e.Severity.ToString() + " " + e.Message +
"(" + e.Exception.LineNumber + ", " + (e.Exception.LinePosition/2) + ")");
}

}
}
在参数中指定XML文件和XSD文件的位置,就能够显示出XML文件中不符合架构的地方。
奇怪的是,VS2005中居然没有内置XML文件验证的功能,也有可能是我没发现。请发现了的朋友告诉我,谢谢!
using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Schema;
using System.IO;
namespace XmlChecker
...{
class Program
...{
static void Main(string[] args)
...{
if (args.Length != 2)
...{
Console.WriteLine("usage: XmlChecker.exe xmlfile xsdfile");
return;
}
if (!File.Exists(args[0]))
...{
Console.WriteLine("xml file not exists!");
return;
}
if (!File.Exists(args[1]))
...{
Console.WriteLine("xsd file not exists!");
return;
}
XmlReaderSettings xsd = new XmlReaderSettings();
xsd.ValidationType = ValidationType.Schema;
xsd.Schemas.Add("", args[1]);
xsd.ValidationEventHandler += new ValidationEventHandler(xsd_ValidationEventHandler);
XmlReader xml = XmlReader.Create(args[0], xsd);
while (xml.Read())
...{
}
xml.Close();
xml = null;
Console.WriteLine("Check Complete!");
}
private static void xsd_ValidationEventHandler(object sender, ValidationEventArgs e)
...{
Console.WriteLine(e.Severity.ToString() + " " + e.Message +
"(" + e.Exception.LineNumber + ", " + (e.Exception.LinePosition/2) + ")");
}
}
}
在参数中指定XML文件和XSD文件的位置,就能够显示出XML文件中不符合架构的地方。
奇怪的是,VS2005中居然没有内置XML文件验证的功能,也有可能是我没发现。请发现了的朋友告诉我,谢谢!
本文介绍了一个使用C#实现的XML文件与XSD架构验证的简单程序。通过命令行输入XML及XSD文件路径,程序将输出不符合架构的部分。值得注意的是,Visual Studio 2005并未内置此功能。
1638

被折叠的 条评论
为什么被折叠?



