XPath:如何选择节点的第一个给定父节点?

时间:2009-08-27 19:34:01

标签: c# xml xpath

我的XML:

<root>
  <child>
     <childOfChild>
        <anotherLostChild>
           <currentSelectedNode>
              SOME TEXT
           </currentSelectedNode>
        </anotherLostChild>
     </childOfChild>
  </child>
</root>

我使用:

选择了节点 currentSelectedNode
xpath.SelectSingleNode("//currentSelectedNode")

但是如何选择第一个 chilfOfChild 父节点(考虑到上下文是 currentSelectedNode

xpath.SelectSingleNode("//currentSelectedNode")...???

4 个答案:

答案 0 :(得分:13)

您的问题实际上令人困惑,但听起来您需要ancestor axis,例如:

//currentSelectedNode/ancestor::childOfChild[1]

(纯xpath解决方案)

答案 1 :(得分:3)

xpath.SelectSingleNode("//currentSelectedNode/../..")

这将选择父母的父母

答案 2 :(得分:0)

在Linq-To-XML中,您只需要使用Ancestor方法:

获得直接的祖先:

xElement.Ancestor();

指定哪个祖先:

xElement.Ancestor("NameOfTheAncestorNode");

答案 3 :(得分:0)

使用XElement xElem,您可以使用xElem.Parent获取直接父级。

https://msdn.microsoft.com/en-us/library/system.xml.linq.xobject.parent(v=vs.110).aspx

要选择特定的祖先节点,您可以使用

xElem.Ancestors("currentSelectedNode"); 

获取具有该特定节点名称的所有祖先。

https://msdn.microsoft.com/en-us/library/bb348268(v=vs.110).aspx