获取XML中的所有属性

时间:2014-04-15 18:01:13

标签: c# xml

我有这样的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
  拉 - 得到

我可以让它适用于特定级别,但不适用于所有子元素。

3 个答案:

答案 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"));