2010-09-30 174 views
1

我試圖讀取XML文件的內容,在C#中使用XmlTextReader的,具有以下結構:XML文件,字典,詞典嵌套

<root> 
    <person id="0"> 
    <a1>val</a1> 
    <a2>val</a2> 
    </person> 
    <person id="1"> 
    <a1>val</a1> 
    <a2>val</a2> 
    </person> 
</root> 

我期待文件讀入到嵌套詞典:

Dictionary<string, Dictionary<string, string>> xmldata = new Dictionary<string, Dictionary<string, string>>(); 

希望能產生:

xmldata = {0 => {a1 => val, a2 => val}, 1 => {a1 => val, a2 => val}} 

問題:

1)不知道這是用於存儲讀取XML數據的最佳方法,我會

<a x="1"></a><a x="2"></a> 

例如更好嗎?
2)有幾個問題成功地填充relavent字典

回答

1

你想在.NET中使用LINQ-to-XML的一切事物XML:

var doc = XDocument.Parse(@"<root> 
    <person id=""0""> 
    <a1>val</a1> 
    <a2>val</a2> 
    </person> 
    <person id=""1""> 
    <a1>val</a1> 
    <a2>val</a2> 
    </person> 
</root>"); 

var result = doc.Root 
       .Elements() 
       .ToDictionary(
        e => e.Attribute("id"), 
        e => e.Elements() 
          .ToDictionary(
           f => f.Name.LocalName, 
           f => f.Value)); 

嵌套字典彷彿result是這樣產生的類似結構:

var result = new Dictionary<string, Dictionary<string, string>> 
{ 
    { "0", new Dictionary<string, string> { { "a1", "val" }, { "a2", "val" } } }, 
    { "1", new Dictionary<string, string> { { "a1", "val" }, { "a2", "val" } } }, 
}; 
+0

非常棒的我的好人!我不知道有一個LINQ到XML的庫,所以感謝你向我介紹。另外感謝代碼示例,有一個戲劇,並得到它的工作,我是如何渴望它。 – Unflux 2010-09-30 23:28:33