более строгий XmlSerializer, который не допускает неиспользуемых узлов

StackOverflow https://stackoverflow.com//questions/11653904

  •  11-12-2019
  •  | 
  •  

Вопрос

Я создал классы C# на основе XSD с помощью инструмента xsd.exe из SDK.Затем я могу использовать этот класс для [де]сериализации объектов с помощью XmlSerializer...Однако сериализатор кажется очень снисходительным.

Возможно ли, что я могу заставить сериализатор выдавать исключение в случае отсутствия свойства или «странного» узла XML?

Я думаю, что один из способов — изменить установщик свойства и заставить его проверять данные (или использовать проверку XSD)...Однако есть ли другое альтернативное решение этой проблемы?

Это было полезно?

Решение

Вы можете реализовать IXmlSerializable интерфейс и в ReadXml метод реализации, проверьте наличие конкретных элементов, которые вам нужны, выдайте исключения, если вы их не найдете (или установите любое уведомление, которое вам нужно).

Если вы хотите использовать схему для проверки (чтобы использовать minOccurs и maxOccurs атрибуты схемы, например), то вы можете настроить XmlReader экземпляр для проверки на соответствие схеме, установив Schemas свойство на XmlReaderSettings сорт что вы переходите к Create метод (обратите внимание, что существуют перегрузки Create которые занимают TextReader, и т. д.).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top