Как получить указанный c элемент в XDcoument - PullRequest
0 голосов
/ 10 марта 2020

У меня есть xml структура, подобная этой

<A>
  <B>
     <C></C>
  </B>
  <C></C>
</A>

Я хочу получить только узел (A> C). Я пытаюсь с Linq-to- Xml

XDocument.Descendants(namespace + "A").Descendants(namespace + "C")

Но результат вернет 2 узла (A> C) и (A> B> C) вместо того, что я хочу, чтобы только узел (A> C). Как я могу это сделать ? Спасибо

Ответы [ 2 ]

2 голосов
/ 10 марта 2020

.Descendants получит всех потомков узла, которые соответствуют XName, другими словами, он обходит дерево, ища все узлы, которые соответствуют этому XName. Если вы ищете прямой дочерний элемент узла (в вашем случае, root), попробуйте перебрать его .Elements и захватить те, которые вы хотите - это будут только прямые дочерние элементы.

Если вы знаете, что существует только один дочерний узел с XName, который вы хотите, вы можете использовать метод .Element(XName), чтобы получить только этот элемент.

1 голос
/ 10 марта 2020

попробуй так:

var doc = XDocument.Parse("<A><B><C>ABC</C></B><C>AC</C></A>");
var resultsAC = doc.Element("A").Element("C");
...