C# C将具有属性的XML元素反序列化到列表中
以下是XML:C# C将具有属性的XML元素反序列化到列表中,c#,xml,xml-parsing,xml-deserialization,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 [XmlAttribu
<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; }
}
目标是完全摆脱连接类,并直接将xml反序列化为:
List<uint> connections;
首先,您的XML是无效的,我想这只是一个输入错误——connect没有结束标记
我建议您使用linq。
那么很容易:
XDocument xdoc = XDocument.Parse(xml);
List<uint> list = xdoc
.Descendants("connect")
.Select(node => uint.Parse(node.Attribute("id").Value))
.ToList();
有没有办法使用System.Xml.Serialization来实现这一点?谢谢!这正是我一直在寻找的解决方案。我没有意识到XDocument的潜力。它是自动关闭的。为什么它不应该是有效的呢?@da_berni,这个问题在我发布之后被编辑并修正了