使用自定义elementName将xml反序列化为List <t>

时间:2018-03-28 17:36:59

标签: c# xml xml-deserialization

今天我试图将一些xml反序列化为List<Status>,因为XML元素名称完全不同。例如,XML如下:

<root>
    <child id="1">Lorum</child>
    <child id="2">Ipsum</child>
    <child id="3">Dolor</child>
</root>

要将其转换为List<T>,可以创建与元素名称相同的对象。但就我而言,这是不受欢迎的。

在我从dotnetfiddle.net复制的代码下面:

using System;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.IO;

[XmlRoot("root")]
public class Statuses : List<Status>
{

}

[XmlRoot("child")]
public class Status
{
    [XmlAttribute("id")]
    public int ID;

    [XmlText]
    public string Value;
}

public static class Program
{
    private static string xml = "<root><child id=\"1\">Lorum</child><child id=\"2\">Ipsum</child><child id=\"3\">Dolor</child></root>";

    public static void Main()
    {
        using (StringReader sw = new StringReader(xml))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Statuses));
            Statuses statuses = (Statuses)serializer.Deserialize(sw);

            Console.WriteLine(statuses.Count);
        }
    }
}

现在的问题是如何轻松填写清单。

1 个答案:

答案 0 :(得分:1)

child元素的属性更改为XMLType

[XmlType("child")]
public class Status

Xml只有一个根,但有多种类型。

相关问题