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

时间:2009-01-14 18:09:37

标签: .net xml xsd

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

  1. 从文件系统中读取xml文件
  2. 针对xsd
  3. 验证xml
  4. 将xml文件的部分内容读入变量
  5. 使用.net。

3 个答案:

答案 0 :(得分:10)

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

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

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

以及捕获在读取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()) { }

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

答案 1 :(得分:6)

根据您希望拥有的容差级别和错误报告,您可能会发现.NET 3.5中引入的新XML Api非常有用 - 类XDocumentXElement,{{3等等,全部来自XAttribute

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

答案 2 :(得分:2)

使用XMLDocument和XMLNode对象。

您可以使用XMLDocument中的Load和LoadXML方法加载xml文档。然后,您可以使用SelectSingleNode根据该节点的XPath获取值。或者,您可以使用SelectNodes方法加载整个节点。

您可以使用XMLDocument对象的Validate方法根据XSD验证XML。