【发布时间】:2015-01-10 04:17:23
【问题描述】:
根据我们的要求,我需要为每个模式验证问题(错误和警告)捕获 xpath 和数据值。以下是我的代码 - 任何帮助如何获取当前节点的 xpath 和 xml 中的无效数据值,如果可能的话,行号和数据位置。
XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.Schemas.Add("http://www.example.com\products", "Schema.xsd");
readerSettings.ValidationType = ValidationType.Schema;
readerSettings.ValidationEventHandler += new ValidationEventHandler(readerSettings_ValidationEventHandler);
using (XmlReader xmlReader = XmlReader.Create(new StringReader(submissionXML), readerSettings))
{
while (xmlReader.Read()) { }
}
void readerSettings_ValidationEventHandler(object sender, ValidationEventArgs e)
{
XmlReader reader = ((XmlReader)sender);
//can I get xpath and data value from the reader
//I can get the element name
if (e.Severity == XmlSeverityType.Warning)
{
Console.Write("WARNING: ");
Console.WriteLine(e.Message);
}
else if (e.Severity == XmlSeverityType.Error)
{
Console.Write("ERROR: ");
Console.WriteLine(e.Exception.LineNumber.ToString() +"-"+ e.Exception.LinePosition.ToString() +"-"+ e.Message);
}
}
【问题讨论】: