Проверка XML с использаванием XSD - C#
Формулировка задачи:
Есть код, который успешно проводит XSD-валидацию и даже выводит неплохое описание того, где именно найдена ошибка. Вот он:
Есть ли способ как-то вывести все ошибки, найденные в XML? Т.е. Console.WriteLine(e.Message) показывает мне оисание первой ошибки, а вот дальше проверка не идет. Можно ли как-то "перешагнуть" этот ошибочный аттрибут(блок, кусок) в обоих файлах и продолжить проверку, получив описание по всем проблемным полям сразу?
public static bool Check(string xsdPath, string xmlPath) { XSDValidation.result = true; //xml прошла проверку успешно XmlReaderSettings booksSettings = new XmlReaderSettings(); booksSettings.Schemas.Add(null, @xsdPath); booksSettings.ValidationType = ValidationType.Schema; booksSettings.ValidationEventHandler += new ValidationEventHandler(booksSettingsValidationEventHandler); //Проверка XML - [url]http://msdn.microsoft.com/ru-ru/library/3740e0b5(v=vs.90[/url]) XmlReader books = XmlReader.Create(@xmlPath, booksSettings); try { while (books.Read()) { } //читает каждую строку } catch (Exception) //структура xml нарушена(xml вообще не читается) { XSDValidation.result = false;//xml не прошла проверку (2-я причина) } return XSDValidation.result; } static void booksSettingsValidationEventHandler(object sender, ValidationEventArgs e) { if (e.Severity == XmlSeverityType.Warning) { Console.Write("WARNING: "); Console.WriteLine(e.Message); } else if (e.Severity == XmlSeverityType.Error) { Console.Write("ERROR: "); Console.WriteLine(e.Message); } XSDValidation.result = false;//xml не прошла проверку по причине несоответствия схеме xsd (1-я причина) }
Решение задачи: «Проверка XML с использаванием XSD»
textual
Листинг программы
while (books.EndOfFile) // псеводкод, "пока не упрется в конец" { try { books.Read() { } //читает каждую строку } catch (Exception) //структура xml нарушена(xml вообще не читается) { XSDValidation.result = false;//xml не прошла проверку (2-я причина) } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д