在.net中验证和读取xml文件的最简单方法?

dtc*_*dtc 6 .net xml xsd

什么是最简单/最简单/最干净的方式:

  1. 从文件系统中读取xml文件
  2. 根据xsd验证xml
  3. 将xml文件的各个部分读入变量

使用.net.

mar*_*c_s 10

基本上,为了进行XSD验证,您需要使用带有ReaderSettings的XmlReader来定义要验证的XSD文件,以及响应/捕获验证错误的事件.

要读取XSD文件,请使用以下内容:

StreamReader xsdReader = new StreamReader(xsdFileName); 
XmlSchema Schema = new XmlSchema();
Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler));
Run Code Online (Sandbox Code Playgroud)

并且用于捕获在读取XSD时可能出现的任何错误的事件处理程序(例如,如果它本身无效)将具有此签名:

private static void XSDValidationEventHandler(object sender, ValidationEventArgs e)
Run Code Online (Sandbox Code Playgroud)

错误消息位于e.Message中.

在内存中加载XSD后,实例化XmlReader并使用适当的设置来强制执行XSD验证:

XmlReaderSettings ReaderSettings = new XmlReaderSettings();    
ReaderSettings.ValidationType = ValidationType.Schema;
ReaderSettings.Schemas.Add(Schema);   
ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler);
Run Code Online (Sandbox Code Playgroud)

此错误事件处理程序具有与上面相同的签名.

然后实际上从头到尾读取文件:

XmlTextReader xmlReader = new XmlTextReader(xmlFileName);
XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings);
while (objXmlReader.Read()) { }
Run Code Online (Sandbox Code Playgroud)

如果发生任何验证错误,您的事件处理程序被调用,您可以在那里捕获错误消息,例如将它们显示给用户(或者只是有一个标志,指示验证是否成功 - 您的电话:))


Bev*_*van 6

根据您希望具有的容差级别和错误报告,您可能会发现.NET 3.5中引入的新XML Api非常有用 - 类XDocument,XElement,XAttribute等,所有这些都来自System.Xml.Linq命名空间.

新的XML Api的设计受到旧XMLDocument设计的经验教训的影响很大,而且更轻巧,更易于使用.