在.NET中验证和读取XML文件的最简单方法是什么?

6

最简单/最干净的方法是什么?

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

使用.net。

3个回答

10

简而言之,要进行XSD验证,您需要使用带有ReaderSettings的XmlReader来定义要验证的XSD文件,并使用事件来响应/捕获验证错误。

要读取XSD文件,请使用类似以下代码:

StreamReader xsdReader = new StreamReader(xsdFileName); 
XmlSchema Schema = new XmlSchema();
Schema = XmlSchema.Read(xsdReader, new ValidationEventHandler(XSDValidationEventHandler));

事件处理程序用于捕获读取XSD时可能出现的任何错误(例如,如果XSD本身无效),其签名将如下所示:

private static void XSDValidationEventHandler(object sender, ValidationEventArgs e)

e.Message中包含错误信息。

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

XmlReaderSettings ReaderSettings = new XmlReaderSettings();    
ReaderSettings.ValidationType = ValidationType.Schema;
ReaderSettings.Schemas.Add(Schema);   
ReaderSettings.ValidationEventHandler += new ValidationEventHandler(XMLValidationEventHandler);

这个错误事件处理程序的签名与上面那个相同。

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

XmlTextReader xmlReader = new XmlTextReader(xmlFileName);
XmlReader objXmlReader = XmlReader.Create(xmlReader, ReaderSettings);
while (objXmlReader.Read()) { }
如果发生任何的验证错误,您的事件处理程序将被调用,并且您可以在其中捕获错误消息,例如将其显示给用户(或者只是有一个指示验证是否成功的标志-由您决定 :))。

如果发生任何验证错误,则会调用您的事件处理程序,您可以在其中捕获错误消息并且例如向用户显示它们(或者只需设置一个指示验证是否成功的标志-由您决定 :))


谢谢。这也是我正在寻找的一部分。但愿我能将两个答案都标记为解决方案。 - dtc

6
根据您想要的容忍级别和错误报告,您可能会发现.NET 3.5引入的新XML Api很有用-所有类都来自XDocumentXElementXAttribute等,均来自System.Xml.Linq namespace。新XML Api的设计受到旧XMLDocument设计的启示,并且更加轻量级和易于使用。

2
使用XMLDocument和XMLNode对象。
您可以使用XMLDocument中的Load和LoadXML方法加载xml文档。然后,您可以使用SelectSingleNode根据该节点的XPath获取值。或者您可以使用SelectNodes方法加载整个节点。
您可以使用XMLDocument对象的Validate方法针对XSD验证XML。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接