XmlSerializer:反序列化字符串数组

时间:2012-04-08 15:26:41

标签: .net xml xmlserializer

鉴于此XML:

<Items>
 <Item>a</Item>
 <Item>b</Item>
</Items>

如何使用XmlSerializer对此进行反序列化?可以是某个自定义类型的数组,也可以只是string[]

我知道如果最里面的标签被称为“字符串”,我可以这样做,但我想保留一个自定义名称。

1 个答案:

答案 0 :(得分:6)

这是演示在LINQPad中使用XmlSerializer

的一种方式
void Main()
{
    using(var stream = new StringReader("<Items><Item>a</Item><Item>b</Item></Items>"))
    {
        var serializer = new XmlSerializer(typeof(Container));

        var items = (Container)serializer.Deserialize(stream);

        items.Dump();
    }
}

[XmlRoot("Items")]
public class Container
{
    [XmlElement("Item")]
    public List<string> Items { get; set; }
}

这是使用XDocument

的另一种方式
void Main()
{
    var doc = XDocument.Parse("<Items><Item>a</Item><Item>b</Item></Items>");

    var list = doc.Element("Items").Elements("Item").Select (d => (string)d);

    list.Dump();
}