ValidationEventHandler спрацоўвае толькі адзін раз?

У мяне ёсць XML-файл, які мае 2 памылкі ад 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);               
        }
    }
0

1 адказы

Я не цалкам разумею вашу праблему. Калі вы хочаце, каб ваш, каб забяспечыць xml з'яўляецца правільным, гэта не робіць не адрозніваецца, калі ён мае 1 памылку ці 2. Ваш код выпускаюць вы ведаеце xml не з'яўляецца правільным.

Акрамя таго, я мяркую, XmlReader ня (можа быць, нават не можа) чытаць далей, калі ён знаходзіць памылку.

1
дададзена
XmlReader працягвае чытанне бягучага дакумента да канца, але ігнаруе прапушчаныя элементы. Я павінен стварыць справаздачу, які будзе адлюстроўвацца на ўсе памылкі ў дакуменце.
дададзена аўтар Wachburn, крыніца
Можа быць, вы можаце паспрабаваць метад Validate
дададзена аўтар rgargente, крыніца