如何在c#中为值创建字典并存储值

时间:2013-09-12 07:05:01

标签: c# xml dictionary

我想为以下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);
    }

我没有得到理想的回应。请告诉我在哪里做错了。谢谢

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
);