Как получить конкретные узлы, которые имеют определенный атрибут в C # - PullRequest
0 голосов
/ 19 октября 2018

Я хочу найти узлы, которые имеют определенный атрибут (как в примере ниже, у нас есть атрибут 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 голосов
/ 19 октября 2018

Используя пространство имен System.Xml.Linq, мы можем воспользоваться классом XDocument, чтобы найти атрибуты "id" и "attr" элемента "anynode".

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}");
}
...