Валидация XML (CommerceML) по XSD - C#
Формулировка задачи:
Всем добрый день, вечер, ночь. Закопался с одной проблемкой, очень нужна помощь.
Задача простая, провести валидацию XML файла в формате CommerceML по его схеме (XSD).
Файл XML:
modaleto.rar
Файл XSD:
commerceml.rar
Даю ссылки, т. к. файлы большие.
Код на C#:
В целом код рабочий и не находит ни каких ошибок, только он не находит ошибок вообще ни когда. Как бы я не менял XML файл он всё равно проходит валидацию. К примеру, я вместо элемента "Контрагент" пишу "Контрагенттт" и он это хавает. Ни как не пойму в чём дело...
using System; using System.Xml; using System.Xml.Schema; using System.IO; public class Sample { public static void Main() { // Create the XmlSchemaSet class. XmlSchemaSet sc = new XmlSchemaSet(); // Add the schema to the collection. sc.Add( "urn:1C.ru:commerceml_2", @"C:\TestXML\commerceml.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( @"C:\TestXML\modaleto.xml", settings ); // Parse the file. while ( reader.Read() ) ; Console.WriteLine( "Нажмите любую клавишу..." ); Console.ReadKey(); } // Display any validation errors. private static void ValidationCallBack( object sender, ValidationEventArgs e ) { Console.WriteLine( "Validation Error: {0}", e.Message ); } }
Решение задачи: «Валидация XML (CommerceML) по XSD»
textual
Листинг программы
using System; using System.IO; using System.Xml; using System.Xml.Schema; public class Sample { private Boolean m_success = true; public Sample() { //Validate the document using an external XSD schema. Validation should fail. Validate( @"C:\TestXML\notValidXSD.xml" ); //Validate the document using an inline XSD. Validation should succeed. Validate( @"C:\TestXML\inlineXSD.xml" ); } public static void Main() { Sample validation = new Sample(); Console.ReadKey(); } private void Validate( String filename ) { m_success = true; Console.WriteLine( "\r\n******" ); Console.WriteLine( "Validating XML file " + filename.ToString() ); XmlTextReader txtreader = new XmlTextReader( filename ); XmlValidatingReader reader = new XmlValidatingReader( txtreader ); // Set the validation event handler reader.ValidationEventHandler += new ValidationEventHandler( ValidationCallBack ); // Read XML data while ( reader.Read() ) { } Console.WriteLine( "Validation finished. Validation {0}", (m_success == true ? "successful!" : "failed.") ); //Close the reader. reader.Close(); } //Display the validation error. private void ValidationCallBack( object sender, ValidationEventArgs args ) { m_success = false; Console.WriteLine( "\r\n\tValidation error: " + args.Message ); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д