2010-01-19 3 views
2

У меня есть класс классов, и мне нужно создать XML-схему для этих классов.Сериализовать все свойства класса в XML

Самый простой способ, который я могу сделать, это создать классы, сериализовать как XML, а затем запустить XSD на этом XML.

Однако, если я не устанавливаю свойства класса, XML-узел не создается, и поэтому XSD не подбирает его.

Есть ли способ сообщить, что XML-сериализатор сериализует ВСЕ свойства класса, а не только те, которые имеют значения?

Надеюсь, больше, чем ожидали! Duncan

ответ

3

XSD.EXE может генерировать схемы из сборки. Просто укажите переключатель /type.

+0

Спасибо, в качестве напоминания всем вам нужно предоставить полное пространство имен, например: xsd Assembly.dll /type:namespace.*/outputdir: C: \ temp – Duncan

2

Несомненно. Внесите IXmlSerializable и у вас есть полный контроль.

Кроме того, я уверен, что вы уже знаете, что существует несколько разных способов анализа/проверки Xml ... и поскольку вы находитесь на платформе Microsoft ... эти инструменты (доступные на MSDN) пригождаются (автоматически генерируют код C#), если вы решаете сериализовать/десериализовать в/из схемы: xsd.exe и xsdObjectGen.exe (дополнительные параметры).

+0

Спасибо, я забыл об этом. Мне также было интересно, есть ли волшебный атрибут, который я мог бы подключить к моему классу, который бы сделал выше, без меня, чтобы реализовать этот интерфейс? – Duncan

2

Использование метаданных атрибутов

[XmlElement(IsNullable=true)] 

Это, однако, добавить дополнительный атрибут XSI: ноль = «истина» в сериализованном выходе, если поле равно нулю.

Смежные вопросы