Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中通过XSD验证XML,并访问无效元素_C#_Xml_Validation_Xsd - Fatal编程技术网

在C#中通过XSD验证XML,并访问无效元素

在C#中通过XSD验证XML,并访问无效元素,c#,xml,validation,xsd,C#,Xml,Validation,Xsd,我想验证具有XSD模式的XML文件。我使用: var settings = new XmlReaderSettings(); settings.ValidationFlags = XmlSchemaValidationFlags.AllowXmlAttributes | XmlSchemaValidationFlags.ProcessIdentityConstraints | XmlSchemaValidationFlags.ProcessInlineSchema

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

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之类的对象。有办法吗?

我不知道有什么简单的方法可以做到这一点。。。我将首先查看与节点关联的属性;直觉上,根据错误,您可能根本无法获得它

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