У меня есть XSD:
<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 и примером в начале этого поста?