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();
有没有办法实现这个使用'System.Xml.Serialization'? –
谢谢!这正是我正在寻找的解决方案。我没有意识到XDocument的潜力。 –