2011-07-05 73 views
10

我需要將XML文件讀取到字典中。將XML讀取到字典中

我讀了很少的指南,我只從我不明白的奇怪單詞(例如節點,XML驗證等)中感到困惑。所以,你可以請我走過去嗎?

我這是寫在這個格式的XML文件:

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

如前所述,我想將它保存在一本字典。我會怎麼做呢?

+2

問題和答案,如這一個是什麼使這個網站如此真棒。兩者皆爲+1。 – neverseenjack

回答

14
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作爲值(作爲字符串)
  • 將該d字典到data,這是隱含類型爲Dictionary<int,string>
7

您的問題是基本的,但不是不適當的。別擔心。我會解釋你應該做什麼。

首先你必須加載這個XML文件(如果它在磁盤上)。否則,你就不需要這一步

XDocument database = XDocument.Load(pathToYourXmlFile); 

了這裏,你說:

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

然後,你必須把所有高清元素的列表:

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

代碼從每個高清提取信息是:

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

現在,你有你的號碼,名稱,只需將其添加到您的字典。

dictionary.Add(number, name); 

希望有所幫助。

+2

應該是'database.Elements(「def」)。ToList()'? – codeulike