【发布时间】:2012-03-28 07:21:05
【问题描述】:
我有一个 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>
我有一个使用这个 XSD 构建的 XML:
<?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>
现在我想使用 XmlSerializer 序列化/反序列化这个 XML。 我有 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和示例进行序列化?
【问题讨论】:
标签: c# xml collections xsd xmlserializer