如何在C#中获取具有特定属性的特定节点

时间:2018-10-19 13:03:22

标签: c# xml xml-parsing xmldocument

我想找到具有特定属性的节点(例如在下面的示例中,我们具有属性attr)

<root>
  <anynode id="1" attr="abc">
    first node
  </anynode>
  <anynode id="2">
    2nd node
  </anynode>
  <anynode id="3" attr="abc">
    3rd node
  </anynode>
  <anynode id="4" attr="def">
    4th node
  </anynode>
</root>

,我希望它同时遍历XMLDocument和XDocument 如果我可以一次迭代获得ID和ATTR的价值,那就太好了 我已经用谷歌搜索了一下,但是我没有找到任何可以帮助我的方法 我想要的最终结果

1,abc , first node
3,abc , 3rd node
4,def , 4th node

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

使用System.Xml.Linq命名空间,我们可以利用XDocument类找到“ anynode”元素的“ id”和“ attr”属性。

var xmlDocument = XDocument.Load(@"path to xml file");

var nodes = xmlDocument.Element("root")?.Elements("anynode");
if (nodes == null)
    return;
foreach (var node in nodes)
{
    var id = node.Attribute("id")?.Value;
    var attr = node.Attribute("attr")?.Value;
    Console.WriteLine($"ID = {id}, ATTR  = {attr}");
}