我想为以下xml创建一个字典:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<groups>
<group>
<data>Open</data>
<aggregation>5</aggregation>
</group>
</groups>
我希望我的字典能够获得以下值:
打开,5
请注意,“打开”是从<data>Open</data>
获取的,而“5”是从<aggregation>5</aggregation>
获取的。
我目前的代码如下:
foreach (XmlNode group in Bugsagg)
{
XmlNode data = group.SelectSingleNode(".//data");
XmlNode aggregate = group.SelectSingleNode(".//aggregation");
if (Dict_Aggregate.ContainsKey(data.InnerText))
{
Dict_Aggregate[data.InnerText]++;
}
else
{
Dict_Aggregate.Add(data.InnerText, 1);
}
我没有得到理想的回应。请告诉我在哪里做错了。谢谢
答案 0 :(得分:2)
使用XElement和LINQ to XML。 你应该添加
using System.Xml;
using System.Xml.Linq;
代码顶部。然后使用以下
string xml = @"<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?><groups><group><data>Open</data><aggregation>5</aggregation></group></groups>";
XElement xe = XElement.Parse(xml);
Dictionary<string,string> d =
xe.Elements("group")
.ToDictionary
(
x=>(string)x.Element("data"), //Key Selector
z=>(string)z.Element("aggregation")//Value Selector
);
有些人可能会建议使用XDocument,因为你提供了一个带声明等的完全限定的xml:
XDocument xd = XDocument.Parse(xml);
Dictionary<string,string> d =
xd.Root.Elements("group")
.ToDictionary
(
x=>(string)x.Element("data"), //Key Selector
z=>(string)z.Element("aggregation")//Value Selector
);