Xml序列化集合作为数组

时间:2009-01-30 17:51:56

标签: c# .net xml-serialization

我正在尝试序列化一个需要使用多个同名元素的自定义类 我尝试过使用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");  
      }
}

2 个答案:

答案 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;你可以直接使用它,也可以只是为了灵感。

(编辑:输出剪断 - 不再有帮助)