У меня есть XSD:XML с коллекциями и XmlSerializer
<xs:complexType name="rootType">
<xs:sequence>
<xs:element name="foo" type="fooType" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="bar" type="barType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- SKIPPED -->
<xs:element name="root" type="rootType"></xs:element>
У меня есть XML построен с использованием этой XSD:
<?xml version="1.0" encoding="utf-8"?>
<root>
<foo><!-- SKIPPED --></foo>
<foo><!-- SKIPPED --></foo>
<foo><!-- SKIPPED --></foo>
<bar><!-- SKIPPED --></bar>
<bar><!-- SKIPPED --></bar>
<bar><!-- SKIPPED --></bar>
<bar><!-- SKIPPED --></bar>
</root>
Теперь я хочу сериализации/десериализации этот XML с помощью XmlSerializer. У меня есть C# классы:
public class fooType
{
public string element { get; set; }
}
public class barType
{
public string element { get; set; }
}
public class rootType
{
public fooType[] foos { get; set; }
public barType[] bars { get; set; }
}
Были некоторые атрибуты XML-связанные, как XmlElementAttribute, но я опускаю их в приведенном выше примере для простоты.
Теперь, пожалуйста, взгляните на определение класса rootType
. Здесь мы имеем два свойства: foos
и bars
. Они будут упорядочены как корневые элементы для fooType[]
и barType[]
массивов:
<?xml version="1.0" encoding="utf-8"?>
<root>
<foos>
<foo><!-- SKIPPED --></foo>
<foo><!-- SKIPPED --></foo>
<foo><!-- SKIPPED --></foo>
</foos>
<bars>
<bar><!-- SKIPPED --></bar>
<bar><!-- SKIPPED --></bar>
<bar><!-- SKIPPED --></bar>
<bar><!-- SKIPPED --></bar>
</bars>
</root>
Но это не то, что я хочу. Как сериализовать их в соответствии с XSD и примером в начале этого сообщения?