获取xml中的属性值列表

时间:2014-04-03 12:56:43

标签: c# xml list linq-to-xml

有没有办法获取特定b的属性值列表(例如r4)?
List<string>包含:“p3e3”和“p3e4”

<a>
  <b id="r4" Name="b 4">
    <P>
      <Pr id="p3e3" />
      <Pr id="p3e4" />
    </P>
  </b>
  <b id="r5" Name="b 5">
     ....
  </b>
</a>  

我得到的最多的是List<XElement>,其中包含“<Pr id="p3e3" />”和“<Pr id="p3e4" />

1 个答案:

答案 0 :(得分:1)

var xdoc = XDocument.Load(path_to_xml);
var result = xdoc.Root.Elements("b")
                 .Where(b => (string)b.Attribute("id") == "r4")
                 .SelectMany(b => b.Element("P").Elements("Pr"))
                 .Select(pr => (string)pr.Attribute("id"));

或者使用XPath:

var result = xdoc.XPathSelectElements("a/b[@id='r4']/P/Pr")
                 .Select(pr => (string)pr.Attribute("id"));