将XML读入字典

时间:2011-07-05 06:26:12

标签: c# xml dictionary readxml

我需要将XML文件读入字典。

我阅读了一些指南,我只是对我不理解的奇怪单词(如节点,XML验证等)感到困惑。 那么,请你指点我一下?

我有一个以这种格式编写的XML文件:

<database>
    <def number="1" name="one"/>
    <def number="2" name="two"/>
</database>

如上所述,我想将其存储在字典中。我该怎么做呢?

2 个答案:

答案 0 :(得分:15)

var data = XElement.Parse(xml)
    .Elements("def")
    .ToDictionary(
        el => (int)el.Attribute("number"),
        el => (string)el.Attribute("name")
    );

此:

  • 将xml解析为XElement(从<database>开始)
  • 遍历<def ...>元素
  • 形成字典,使用@number作为键(解释为int),@name作为值(作为字符串)
  • 将此词典分配给data,隐式输入为Dictionary<int,string>

答案 1 :(得分:8)

您的问题是基本的,但并非不恰当。别担心。我会解释你应该做些什么。

首先你必须加载这个XML文件(如果它在磁盘上)。否则你不需要这个步骤

XDocument database = XDocument.Load(pathToYourXmlFile);

到此为止,你得到了:

<database>
    <def number="1" name="one"/>
    <def number="2" name="two"/>
</database>

然后你必须得到所有 def 元素的列表:

List<XElement> defs = database.Elements("def");

到此为止,你得到了:

<def number="1" name="one"/>
<def number="2" name="two"/>

现在,您应该获取列表中的每个项目(defs中的每个def):

foreach(XElement def in defs)
{
    // Here you have each def <def number="x" name="y" />
    int number = def.Attribute("number").value;
    string name = def.Attribute("name").value;
}

从每个def中提取信息的代码是:

int number = def.Attribute("number").value;
string name = def.Attribute("name").value;

现在您已拥有自己的号码和姓名,只需将其添加到词典中即可。

dictionary.Add(number, name);

希望有所帮助。