Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dom 获取XPath中的父元素名称_Dom_Xpath - Fatal编程技术网

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()/…)更好吗?不,
父项:
相同。我通常使用
,但这是一个古老的答案,谁知道我那天在想什么;-)