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
Xpath:基于父值的查询中的异常_Xpath_Parent Child - Fatal编程技术网

Xpath:基于父值的查询中的异常

Xpath:基于父值的查询中的异常,xpath,parent-child,Xpath,Parent Child,我需要取所有的“//ul/li[不是(@*)][count(*)=0]”,除了那些有父项的。我尝试了“//not(div)/ul/li[not(@*)][count(*)=0]”,但不幸的是它不起作用。 有人知道吗,我该怎么处理? 提前谢谢。我想您需要: //ul[not(parent::div)]/li[not(@*|*)] 或: 当它是根元素时,两者都选择这样的ul。使用: //*[not(self::div)]/li[not(@*) and not(*)] 可以略为缩写为等效的: //

我需要取所有的
“//ul/li[不是(@*)][count(*)=0]”
,除了那些有
父项的。我尝试了
“//not(div)/ul/li[not(@*)][count(*)=0]”
,但不幸的是它不起作用。 有人知道吗,我该怎么处理? 提前谢谢。

我想您需要:

//ul[not(parent::div)]/li[not(@*|*)]
或:

当它是根元素时,两者都选择这样的
ul

使用

//*[not(self::div)]/li[not(@*) and not(*)]
可以略为缩写为等效的:

//*[not(self::div)]/li[not(@*|*)]

是的,这正是我想要的。好问题,+1。有关选择所需节点的最短XPath表达式,请参见我的答案。:)不幸的是,1)它有一个打包错误-我认为这是因为缺少括号:not
/*[not(self::div)]/li[not(@*)和not(*)但是
/*[not(self::div)]/li[not(@*)和not(*)]
2)经过修正后的表达式,我得到了一个不需要的表达式result@CodeJunkie当前位置谢谢你的好理解--我更正了这两个表达式,现在它们在语法上是正确的。至于得到一个不想要的结果,请您提供一个最简单的XML文档(通过编辑您的问题)来演示这一点?也许你错报了你的要求,或者错过了一个额外的要求
//*[not(self::div)]/li[not(@*|*)]