Валидация 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 );
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д