Как я могу проверить вывод XmlSerializer?

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

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

6
задан Tim Jansen 9 March 2010 в 09:37
поделиться

2 ответа

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

Вот быстрый удар

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

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

4
ответ дан 17 December 2019 в 07:03
поделиться

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

0
ответ дан 17 December 2019 в 07:03
поделиться
Другие вопросы по тегам:

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