XPath:如何选择节点的第一个给定的父节点?
问题描述:
我的XML:XPath:如何选择节点的第一个给定的父节点?
<root>
<child>
<childOfChild>
<anotherLostChild>
<currentSelectedNode>
SOME TEXT
</currentSelectedNode>
</anotherLostChild>
</childOfChild>
</child>
</root>
我选择使用节点currentSelectedNode:
xpath.SelectSingleNode("//currentSelectedNode")
但我怎么能恢复到选择第一chilfOfChild父节点(考虑到上下文currentSelectedNode?
xpath.SelectSingleNode("//currentSelectedNode")...???
答
你的问题确实是容易混淆写,但它听起来像你想要的ancestor axis,是这样的:
//currentSelectedNode/ancestor::childOfChild[1]
(纯XPath的解决方案)
答
xpath.SelectSingleNode("//currentSelectedNode/../..")
这将选择父亲的父亲
答
在Linq-To-XML中,您只需要使用祖先方法:
要获得立即的祖先或:
xElement.Ancestor();
要指定祖先:
xElement.Ancestor("NameOfTheAncestorNode");
答
使用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
Ancestor()方法不存在。 – WillB3 2016-03-18 18:20:59