Dom 获取XPath中的父元素名称
我试图找出如何从文本节点的作用域中获取父节点的名称Dom 获取XPath中的父元素名称,dom,xpath,Dom,Xpath,我试图找出如何从文本节点的作用域中获取父节点的名称 //text()[name(parent)='p'] 如何获取当前节点的父节点的名称 //text/..[@name='p'] 这将获得节点的所有父节点,只要父节点的名称属性为p如果您尝试测试该名称,您几乎就得到了它: //text()[name(parent::*)='p'] 如果您试图返回名称: name(//text()/parent::*) 仅供参考,术语点:文本节点不是元素 无论如何,选择当前节点的父节点最简洁的方法是。 因此
//text()[name(parent)='p']
如何获取当前节点的父节点的名称
//text/..[@name='p']
这将获得
节点的所有父节点,只要父节点的名称属性为p
如果您尝试测试该名称,您几乎就得到了它:
//text()[name(parent::*)='p']
如果您试图返回名称:
name(//text()/parent::*)
仅供参考,术语点:文本节点不是元素
无论如何,选择当前节点的父节点最简洁的方法是。
因此,当前节点(可能是文本节点)的父元素的名称是name(..)
将其替换到XPath表达式中:
//text()[name(..)='p']
但是,一种不那么迂回的写作方式是
//p/text()
(假设文档中的p
元素没有名称空间前缀)。无论哪种方式,您选择的所有文本节点都是名为p
的元素的子元素。他的术语令人困惑,但他说的是文本节点,而不是
元素。。。和元素名称,而不是名称
属性。感谢您的额外解释。这比名称(//text()/…)更好吗?不,。
与父项:
相同。我通常使用。
,但这是一个古老的答案,谁知道我那天在想什么;-)