在C#中针对引用的XSD验证XML每个元素

时间:2015-08-03 02:01:01

标签: xml c#-4.0 xsd xsd-validation xml-validation

我正在创建一个控制台应用程序来验证C#中的xml。当我打开文件时,根据模式验证它,当它在节点中遇到错误时,它会从节点出来并验证文件中的下一个节点。但不知何故,我似乎无法在节点中收到错误后验证所有元素。

XmlDocument asset = new XmlDocument();

XmlTextReader schemaReader = new XmlTextReader("relativeSchemaPath");
XmlSchema schema = XmlSchema.Read(schemaReader, SchemaValidationHandler);

asset.Schemas.Add(schema);

asset.Load(filename);
asset.Validate(DocumentValidationHandler);

我使用了验证方法,但它只给出了不给出所有错误。我引用了我所遵循的链接。

https://msdn.microsoft.com/en-us/library/Bb387037.aspx

https://msdn.microsoft.com/en-us/library/3740e0b5%28v=vs.110%29.aspx

Need help validating XML against XSD in C#

我需要验证文件中的所有元素,即使在节点中获取错误后我需要验证节点中的剩余元素。我需要列出缺少以下元素的错误,区分大小写和序列。

1 个答案:

答案 0 :(得分:0)

如果验证程序遇到格式错误的XML,它通常会停止运行,但应继续读取过去缺少的/其他XML元素。但是,它可能最终会跳过剩下的兄弟姐妹,因为它可能无法弄清楚应该给出的错误。

我通常在XmlReaderSettings类中设置所有设置并将其传递给阅读器,有一件事可能会给你带来更多你想要的错误是XmlSchemaValidationFlags.ReportValidationWarnings。 使用此处的设置会对如何应用验证产生重大影响,尤其是ValidationType属性。

看看

https://msdn.microsoft.com/en-us/library/system.xml.xmlreadersettings.validationflags%28v=vs.110%29.aspx

如果您仍然遇到问题发布样本XSD / XML文件,并指出您希望看到的错误