我正在尝试序列化一个需要使用多个同名元素的自定义类 我尝试过使用xmlarray,但它将它们包含在另一个元素中。
我希望我的xml看起来像这样。
<root>
<trees>some text</trees>
<trees>some more text</trees>
</root>
我的代码:
[Serializable(), XmlRoot("root")]
public class test
{
[XmlArray("trees")]
public ArrayList MyProp1 = new ArrayList();
public test()
{
MyProp1.Add("some text");
MyProp1.Add("some more text");
}
}
答案 0 :(得分:7)
尝试使用[XmlElement("trees")]
:
[Serializable(), XmlRoot("root")]
public class test
{
[XmlElement("trees")]
public List<string> MyProp1 = new List<string>();
public test()
{
MyProp1.Add("some text");
MyProp1.Add("some more text");
}
}
注意我已将ArrayList
更改为List<string>
以清除输出;在1.1中,StringCollection
将是另一种选择,尽管它具有不同的区分大小写规则。
答案 1 :(得分:0)
(编辑:已废弃 - 我的second post([XmlElement]
)是要走的路 - 我将其留给后人使用xsd.exe
)
xsd.exe
是你的朋友。将所需的xml复制到文件(foo.xml
)中,然后使用:
xsd foo.xml
xsd foo.xsd /classes
现在阅读foo.cs
;你可以直接使用它,也可以只是为了灵感。
(编辑:输出剪断 - 不再有帮助)