在C#中使用对无效元素的访问通过XSD验证XML

本文关键字:访问 XSD XML 验证 元素 无效 | 更新日期: 2023-09-27 18:21:31

我想验证我的XML文件是否具有XSD模式。我使用:

var settings = new XmlReaderSettings();
settings.ValidationFlags = XmlSchemaValidationFlags.AllowXmlAttributes
    | XmlSchemaValidationFlags.ProcessIdentityConstraints
    | XmlSchemaValidationFlags.ProcessInlineSchema        
    | XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new ValidationEventHandler(settings_ValidationEventHandler);
settings.Schemas.Add(xsc);
var vreader = XmlReader.Create(stream, settings);
while (vreader.Read());

如果发生了一些错误,那么我的处理程序中有漂亮的可读信息。但我想知道导致错误的节点。无法访问像XmlElement这样的对象或类似的对象。有办法做到吗?

在C#中使用对无效元素的访问通过XSD验证XML

我不知道如何做到这一点的简单方法。。。我将从查看与节点相关联的SchemaInfo属性开始;凭直觉,根据错误,你可能根本不会得到它。。。

它们之间唯一的另一个"键"可能是行/列编号,然后可以对其进行交叉索引(您需要阅读该编号,使用Xml.Linq)。