10

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

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

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

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

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

4

2 回答 2

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

这个:

  • 将 xml 解析为XElement(从 开始<database>
  • 迭代<def ...>元素
  • 形成一个字典,@number用作键(解释为 an int)和@name值(作为字符串)
  • 将此字典分配给data,隐式键入为Dictionary<int,string>
于 2011-07-05T06:29:27.250 回答
9

你的问题是基本的,但不是不恰当的。不用担心。我会解释你应该怎么做。

首先你必须加载这个 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);

希望有帮助。

于 2011-07-05T06:38:49.643 回答