给定 XSD,例如:
<xs:complexType name="accident">
<xs:sequence>
<xs:element name="NAME" type="xs:string" />
<xs:element name="DESCRIPTION" type="xs:string" />
<xs:element name="CREATIONDATE" type="xs:dateTime" />
</xs:sequence>
</xs:complexType>
<xs:element name="accidents">
<xs:complexType>
<xs:sequence>
<xs:element name="accident" type="accident" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我希望 XML 像:
<?xml version="1.0" encoding="UTF-8"?>
<accidents>
<accident>
<NAME>Accident 123</NAME>
<DESCRIPTION>Car crash</DESCRIPTION>
<CREATIONDATE>2016-01-20T12:08:00+00:00</CREATIONDATE>
</accident>
</accidents>
我使用 XSD2Code 生成 C# 类,因此我可以轻松地从 Web 服务反序列化 XML。但他们工作不正常——他们像我的例子一样成功地加载了一个测试 XML,但accident
元素为零。
所以我决定扭转这个过程:
accidents aa = new accidents();
accident a = new accident();
a.NAME = "test";
aa.accident.Add(a);
aa.SaveToFile("accidents.xml");
这发出了以下 XML:
<?xml version="1.0"?>
<accidents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<accident>
<accident>
<NAME>test</NAME>
<CREATIONDATE>0001-01-01T00:00:00</CREATIONDATE>
</accident>
</accident>
</accidents>
如果我尝试反序列化该 XML,它就可以正常工作。但请注意,有一个accident
不正确的嵌套,我不知道它会这样做或如何修复它!
这似乎是一个类似的问题,但由于它没有引起太多关注并且不包括 XSD,我不确定:xsd2code 在序列化列表时创建额外的嵌套集合