我有XML文件,XSD有2个错误。但是ValidationEventHandler只触发了一次,只有在我纠正第一个错误时才向我显示第二个错误。 这是我的代码:
public static void ValidateXml(string xml, string xsd)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationEventHandler += settings_ValidationEventHandler;
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(null, XmlReader.Create(xsd));
if (settings.Schemas.Count > 0)
{
using (XmlReader reader = XmlReader.Create(xml, settings))
{
while (reader.Read())
{
}
}
}
}
private static void settings_ValidationEventHandler(object sender,
ValidationEventArgs e)
{
Console.WriteLine("Validation Error Message: {0}", e.Message);
Console.WriteLine("Validation Error Severity: {0}", e.Severity);
if (e.Exception != null)
{
Console.WriteLine("Validation Error Line Number: {0}",
e.Exception.LineNumber);
Console.WriteLine("Validation Error Line Position: {0}",
e.Exception.LinePosition);
}
}
答案 0 :(得分:1)
我不完全理解你的问题。如果您希望确保XML是正确的,那么如果它有1个错误或2,则没有什么不同。您的代码让您知道XML不正确。
此外,我认为如果发现错误,XmlReader将不会(甚至不能)继续阅读。