Сериализация всех свойств класса в XML - PullRequest
2 голосов
/ 19 января 2010

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

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

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

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

Надеюсь, больше, чем ожидал! Дункан

Ответы [ 3 ]

3 голосов
/ 19 января 2010

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

2 голосов
/ 19 января 2010

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

[XmlElement(IsNullable=true)]

Однако он добавит дополнительный атрибут xsi: nil = "true" к сериализованному выводу, если поле пустое.

2 голосов
/ 19 января 2010

Конечно. Реализуйте IXmlSerializable , и вы получите полный контроль.

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

...