Как я могу проверить вывод XmlSerializer? - PullRequest
6 голосов
/ 09 марта 2010

В C # / .NET 2.0, когда я сериализую объект, использующий XmlSerializer , какой самый простой способ проверить вывод по схеме XML?

Проблема в том, что с помощью XmlSerializer слишком легко написать неверный XML, и я не могу найти способ проверить XML, который не выглядит громоздким. В идеале я хотел бы установить схему в XmlSerializer или иметь проверяющий XmlWriter.

Ответы [ 2 ]

4 голосов
/ 09 марта 2010

Как насчет повторного чтения с помощью проверяющего считывателя

Вот быстрый удар по нему

Stream stream = new MemoryStream(Encoding.UTF8.GetBytes("<YourXml />"));
var input = mappingAssembly.GetManifestResourceStream(
            "MySchema.xsd"
            ); //This could be whatever resource your schema is           
var schemas = new XmlSchemaSet();            
schemas.Add(
   "urn:YourSchemaUrn",
   XmlReader.Create(
      input
      )
 );

var settings = new XmlReaderSettings
                           {
                               ValidationType = ValidationType.Schema,
                               Schemas = schemas
                           };

settings.ValidationEventHandler += MakeAHandlerToHandleAnyErrors;

var reader = XmlReader.Create(stream, settings);
while (reader.Read()) {} //Makes it read to the end, therefore validates

Вам понадобится какой-нибудь обработчик, чтобы что-то делать при ошибках.

0 голосов
/ 09 марта 2010

Вы можете использовать XmlReader для проверки XML-файла по схеме XSD.

...