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

Oma*_*riq 1 html php xml xpath

我对XPath并不完全熟悉.我做了大量的搜索,只为直系孩子找到了解决方案.

要求是选择一个没有任何子元素,大子元素,盛大子元素或其家族树中存在文本节点的子元素.

一个简单的例子是: -

<div><p></p><p><span></span></p><p><span>notemptychild</span></p><p>notempty</p></div>
Run Code Online (Sandbox Code Playgroud)

如果我运行以下XPath查询: -

//p[not(text())]
Run Code Online (Sandbox Code Playgroud)

它给出了以下输出: -

Element='<p/>'
Element='<p>
   <span/>
</p>'
Element='<p>
   <span>notemptychild</span>
</p>'
Run Code Online (Sandbox Code Playgroud)

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

第一个元素是有效选择.

第二个元素是有效选择.

第三个元素不是有效选择,因为其pspan节点中有一个文本节点.

我希望我没有提出复杂的问题.

kjh*_*hes 7

这个XPath,

//*[not(.//text())]
Run Code Online (Sandbox Code Playgroud)

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


这个XPath,

//*[not(.//text()[normalize-space()])]
Run Code Online (Sandbox Code Playgroud)

做同样但允许只包含空格的文本节点.