我有这样的XML:
<msg action="getDetails" class="2">
<stamps msgtime="4/15/2014" ltq="2014-04-15">
<dat la="get" />
</stamps>
</msg>
如何检索所有属性及其相应值的字典?预期的输出应该是这样的:
动作 - getDetails
class - 2
msgtime - 2014/4/15
ltq - 2014-04-15
拉 - 得到
我可以让它适用于特定级别,但不适用于所有子元素。
答案 0 :(得分:6)
var xDoc = XDocument.Load("path");
var attributes = xDoc.Descendants()
.SelectMany(x => x.Attributes())
.ToDictionary(x => x.Name.LocalName, x => (string)x);
答案 1 :(得分:0)
您是否尝试过使用Descendants?
它允许你获得所有元素的IEnumerable<XElement>
,获得属性就像你已经完成的那样。
答案 2 :(得分:0)
使用Linq-to-XML
获取属性及其值更容易。
样本用法
XElement cust = new XElement("PhoneNumbers",
new XElement("Phone",
new XAttribute("type", "home"),
"555-555-5555"),
new XElement("Phone",
new XAttribute("type", "work"),
"555-555-6666")
);
IEnumerable<XElement> elList =
from el in cust.Descendants("Phone")
select el;
foreach (XElement el in elList)
Console.WriteLine((string)el.Attribute("type"));