string xml="< theme>
<colors>
<color>
<code>1</code>
<name>blue</name>
<priority>5</priority>
</color>
<color>
<code>2</code>
<name>red</name>
<priority>2</priority>
</color>
<color>
<code>3</code>
<name>green</name>
<priority>7</priority>
</color>
</colors>
</theme>"
我想将这个xml字符串转换为名为“colors”的字典列表。例如:
List< Dictionary< string, string>> colors=new List< Dictionary< string, string>>();
colors=//Magic happens here
colors[0]["name"] would return 'blue'
colors[2]["priority"] would return '7'
等
感谢。
答案 0 :(得分:3)
假设您正在使用LINQ to XML,那相对容易:
var query = doc.Descendants("colors")
.Elements() // Get to each "color" element
.Select(outer => outer.Elements()
.ToDictionary(x => x.Name.LocalName,
x => x.Value))
.ToList();
如果有任何对您没有意义,请告诉我。
编辑:哎呀,那之前会是List<Dictionary<XName, string>>
。修正:)
using System.Linq;
using System.Xml.Linq;
他们需要找到扩展方法。
答案 1 :(得分:1)
使用LINQ:
var d = XDocument.Parse(x);
var l = new List<Dictionary<string, string>>(
from color in d.Root.Element("colors").Elements("color")
select color.Elements().ToDictionary(k => k.Name.LocalName, k=>k.Value)
);
(其中X是字符串)
答案 2 :(得分:0)
如果您使用LINQ to XML,我会发现Jon的答案更方便,否则您可能需要检查xsd.exe工具
http://msdn.microsoft.com/en-us/library/x6c1kb0s%28VS.71%29.aspx
http://shadym.blogspot.com/2009/12/how-to-create-c-class-from-xml-file-via.html