C#将带有属性的XML元素反序列化为List

时间:2017-06-06 17:44:33

标签: c# xml xml-parsing xml-deserialization

这是XML:

<xml id = "1234">
    <connect id="2"/>
    <connect id="1"/>
    <connect id="21"/>
    <connect id="3"/>
    <connect id="7"/>
</xml>

目前我这样做:

public class xml
{
    //Constructor

    [XmlAttribute ("id")]
    public uint id;

    [XmlElement ("connect")]
    public List<Connection> Connections { get; set; }

    //Deserializer
}

public class Connection
{
    [XmlAttribute ("id")]
    public uint id { get; set; }
}

目标是完全摆脱Connection类并将xml直接反序列化为:

List<uint> connections;

1 个答案:

答案 0 :(得分:1)

首先,您的XML无效,我猜它只是一个错字 - "connect"没有结束标记。

我建议您使用linq XDocument 那很简单:

XDocument xdoc = XDocument.Parse(xml);
List<uint> list = xdoc
                    .Descendants("connect")
                    .Select(node => uint.Parse(node.Attribute("id").Value))
                    .ToList();