如何获取 XDocument 中的特定元素

How to get specific element in a XDcoument

我有一个 xml 这样的结构

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

我只想获取节点 (A > C)。我尝试使用 Linq-to-Xml

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

但结果会 return 2 个节点 (A > C) 和 (A > B > C) 而不是我想要的那个唯一的节点 (A > C)。 我怎样才能做到这一点 ? 谢谢

.Descendants会得到所有个匹配XName节点的后代,换句话说,它遍历树,寻找所有节点匹配 XName。如果您正在寻找节点的 直接子节点 (在您的情况下为根节点),请尝试遍历其 .Elements 并获取您想要的节点 - 这些将只能是直系子女。

如果您知道只有一个子节点具有您想要的 XName,您可以使用 .Element(XName) 方法来获取该元素。

这样试试:

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