Как выявить ВСЕ ошибки и несоответствия xsd-схеме xml-файла?

У C# есть класс XmlSchemaSet, с помощью которого можно работать с xml файлами.
Ключевое слово вопроса - все .
Дело в том, что код с документации сайта microsoft при проверке xml-файла по xsd-схеме, вызывает исключение (при наличии ошибок в xml файле) и программа останавливается при нахождении первой ошибки.
Код C#:
public static void Main()
    {

        // Create the XmlSchemaSet class.
        XmlSchemaSet sc = new XmlSchemaSet();

        // Add the schema to the collection.
        sc.Add(null, "shema.xsd");

        // Set the validation settings.
        XmlReaderSettings settings = new XmlReaderSettings();
        settings.ValidationType = ValidationType.Schema;
        settings.Schemas = sc;
        settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);

        // Create the XmlReader object.
        XmlReader reader = XmlReader.Create("my.xml", settings);

        // Parse the file. 
        while (reader.Read()) ;

    }

    // Display any validation errors.
    private static void ValidationCallBack(object sender, ValidationEventArgs e)
    {
        Console.WriteLine("Validation Error: {0}", e.Message);
    }


Мне же нужно, чтобы проверка xml продолжалась, после нахождения первой ошибки , чтобы в итоге собрать инфу о позиции, типе всех ошибок, найденных в xml файле.
После изучения документации microsoft мне кажется, что дальнейшая проверка файла xml после вызова исключения невозможна, но все же напишу здесь свой вопрос , чтобы точно убедиться , если это так)
  • Вопрос задан
  • 1234 просмотра
Решения вопроса 1
@Farwisdomer
https://social.msdn.microsoft.com/Forums/en-US/e64...

На мой взгляд, сначала лучше проверить хмл на валидность (правильную структуру) и только потом по xsd схеме.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Мне же нужно, чтобы проверка xml продолжалась, после нахождения первой ошибки , чтобы в итоге собрать инфу о позиции, типе всех ошибок, найденных в xml файле.
На самом деле после первой ошибки смотреть дальше - практически бессмысленно, так все остальные ошибки могут быть следствием первой.
Ответ написан
возьмите любой из на гитхабе напр https://github.com/andreburgaud/xvalidatr и поменяйте его чтобы продолжал после Exception
я как то точно то же делал с yaml валидатором https://github.com/aaubry/YamlDotNet . чтоб один прогон выявлял больше чем одну ошибку ( в yaml плохие коммиты случаются часто
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы