2010-09-30 131 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