繁体   English   中英

文档中所有没有文本节点后代的元素的Xpath?

[英]Xpath for all elements in the document without text node descendants?

我对XPath并不完全熟悉。 我进行了广泛的搜索,仅找到了针对直系孩子的解决方案。

要求是选择一个元素,该元素不包含任何子代,孙代,孙代或家族树中存在文本节点的任何子代。

一个简单的例子是:

<div><p></p><p><span></span></p><p><span>notemptychild</span></p><p>notempty</p></div>

如果我运行以下XPath查询:

//p[not(text())]

它给出以下输出:

Element='<p/>'
Element='<p>
   <span/>
</p>'
Element='<p>
   <span>notemptychild</span>
</p>'

(我正在使用freeformatter xpath工具: http ://www.freeformatter.com/xpath-tester.html)

第一个元素是有效选择。

第二个元素是有效选择。

第三个元素不是有效的选择,因为p的子span有一个文本节点。

我希望我不要因为复杂而提出这个问题。

这个XPath

//*[not(.//text())]

将选择文档中没有文本节点后代的所有元素。


这个XPath

//*[not(.//text()[normalize-space()])]

这样做相同,但允许仅由空格组成的文本节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM