使用错误行号在XSD上验证XML

Wac*_*urn 7 .net c#

有没有办法使用错误行号的输出验证XSD架构上的XML文件?

XmlReader阅读器不允许使用行号,它只显示元素名称.

sq3*_*33G 7

查看原始的MSDN示例:

http://msdn.microsoft.com/en-us/library/ms172454.aspx

ValidationEventHandler的ValidationEventArgs参数具有Exception.LineNumber:

private void SchemaValidationEventHandler(object sender, ValidationEventArgs e) {
    Console.WriteLine("XML {0}: {1} (Line {2})",
                         e.Severity,
                         e.Message,
                         e.Exception.LineNumber);
}
Run Code Online (Sandbox Code Playgroud)

  • 如果你可以使用.net 3.5:使用行号信息加载Xdocument非常重要:`XDocument doc = XDocument.Load(fileStream,LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo | LoadOptions.SetBaseUri);`参见:[MSDN]( http://msdn.microsoft.com/de-de/library/system.xml.linq.xdocument.validate%28v=vs.90%29.aspx) (12认同)

sch*_*tbi 6

由于@chris-watts 建议再次发布我的评论作为答案。这里是。

如果文档加载了适当的标志,则该文档只有行号信息:

var opts = LoadOptions.PreserveWhitespace 
         | LoadOptions.SetLineInfo;
XDocument doc = XDocument.Load(fileStream, opts); 
Run Code Online (Sandbox Code Playgroud)