我需要将XML文件读入字典。
我阅读了一些指南,我只是对我不理解的奇怪单词(如节点,XML验证等)感到困惑。 那么,请你指点我一下?
我有一个以这种格式编写的XML文件:
<database>
<def number="1" name="one"/>
<def number="2" name="two"/>
</database>
如上所述,我想将其存储在字典中。我该怎么做呢?
答案 0 :(得分:15)
var data = XElement.Parse(xml)
.Elements("def")
.ToDictionary(
el => (int)el.Attribute("number"),
el => (string)el.Attribute("name")
);
此:
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);
希望有所帮助。