У меня есть файл XML-схемы (xsd), который сериализуется в файл, который точно так, как мне нужно, чтобы файл выглядел и вел себя. Однако я хочу, чтобы элемент верхнего уровня, в частности, заголовок, был создан. Прямо сейчас исходный код, сгенерированный XSD.exe Просто предоставляет мне свойство «Заголовок», типизированное как объект заголовка, но оно не создается.
Использование System.XML.Serialization специально для сериализации объекта из файла XML в типизированный объект.
Так в принципе, если я попытаюсь ...
MyDoc.Header.HeaderField1 = "My value";
Я получаю нулевую ссылку.
Я должен ...
MyDoc.Header = new MyApplication.Models.MyDoc.Header();
MyDoc.Header.HeaderField1 = "My value";
Мне бы хотелось, чтобы инструмент XSD.exe просто генерировал объект Header и в свойстве Header установил значение = new Header () прямо из bat.
Ничего страшного, легко обойти, но может быть аккуратнее. : -Р
Вот в основном схема, которая у меня есть.
<?xml version="1.0" encoding="utf-8"?>
<!--
xsd MyDoc.xsd /c /n:MyApplication.Models
-->
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsd:element name="MyDoc">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Header">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="HeaderField1" type="xsd:string" />
<xsd:element name="HeaderField2" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Items">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Item">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Field1" type="xsd:string" />
<xsd:element name="Field2" type="xsd:string" />
<xsd:element name="Field3" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xs:schema>