Когда у меня есть повторитель на xsd:sequence
например: <xsd:sequence minOccurs="1" maxOccurs="unbounded">
Это будет соответствующий xml:
<Element>
<name>e1</name>
<number>n1</number>
<details>i1</details>
<name>e2</name>
<number>n2</number>
<details>i2</details>
<name>e3</name>
<number>n3</number>
<details>i3</details>
</Element>
с другой стороны, когда у меня есть повторитель на элементе:
<xsd:sequence>
<xsd:element name="name" type="xsd:token" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="number" type="xsd:token" minOccurs="1" maxOccurs="unbounded"/>
<xsd:element name="details" type="xsd:token" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
соответствующий xml будет:
<Element>
<name>e1</name>
<name>e2</name>
<name>e3</name>
<number>n1</number>
<number>n2</number>
<number>n3</number>
<details>i1</details>
<details>i2</details>
<details>i3</details>
</Element>
Но когда я конвертирую следующий xsd-файл в класс C # (используя xsd.exe )
<xsd:element name="Element" type="ElementType"/>
<xsd:complexType name="ElementType">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element name="name" type="xsd:token"/>
<xsd:element name="number" type="xsd:token"/>
<xsd:element name="details" type="xsd:token"/>
</xsd:sequence>
</xsd:complexType>
сгенерированный класс C #:
public partial class ElementType{
private string[] nameField;
private string[] numberField;
private string[] detailsField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("name", DataType="token")]
public string[] name{
get {
return this.nameField;
}
set {
this.nameField= value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("number", DataType="token")]
public string[] number {
get {
return this.numberField;
}
set {
this.numberField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("details", DataType="token")]
public string[] details{
get {
return this.detailsField;
}
set {
this.detailsField= value;
}
}
}
Я получаю этот xml (сгенерированный на основе класса с XmlSerializer
)
<Element>
<name>e1</name>
<name>e2</name>
<name>e3</name>
<number>n1</number>
<number>n2</number>
<number>n3</number>
<details>i1</details>
<details>i2</details>
<details>i3</details>
</Element>
Есть ли способ создать правильный xml?
Или, если так работает Microsoft XmlSerializer
, как мне нужно изменить класс C #, чтобы получить правильный результат?