0

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

我没有得到想要的回应。请建议我在哪里做错了。谢谢

4

1 回答 1

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
);
于 2013-09-12T07:11:57.700 回答