C# ValidationEventHandler仅触发一次?

C# ValidationEventHandler仅触发一次?,c#,.net,C#,.net,我有一个XML文件,XSD有两个错误。但是ValidationEventHandler只触发了一次,并且只有在我纠正第一个错误时才显示第二个错误。 这是我的代码: public static void ValidateXml(string xml, string xsd) { XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationEventHandle

我有一个XML文件,XSD有两个错误。但是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);               
        }
    }

我不完全理解你的问题。如果您想确保XML是正确的,那么如果它有1个错误或2个错误,则没有什么区别。您的代码让您知道XML不正确


此外,如果发现错误,我认为XmlReader不会(甚至可能不能)继续读取。

XmlReader将继续读取当前文档,直到最后,但忽略丢失的元素。我必须生成一个报告,显示文档中的所有错误。也许您可以尝试验证方法