C#反序列化的XML元素与属性到列表

问题描述:

这里的XML:C#反序列化的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; 

首先,你的XML是无效的,我想这只是一个错字 - 没有结束标签f或"connect"

我建议你使用linq XDocument
然后,它很简单:

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

有没有办法实现这个使用'System.Xml.Serialization'? –

+0

谢谢!这正是我正在寻找的解决方案。我没有意识到XDocument的潜力。 –