xpath返回所有非空文本节点,而不是`a`,`style`或`script`的后代

Maj*_*our 16 xpath

什么表达式将选择所有文本节点:

  • 不是空白
  • 不在里面a,script或者style

Dim*_*hev 17

用途:

//*[not(self::a or self::script or self::style)]/text()[normalize-space()]
Run Code Online (Sandbox Code Playgroud)

这个表达式不仅比当前接受的答案更短,而且效率更高.

请注意,表达式根本不使用任何(向后/向上)向轴.


Mar*_*nen 16

这应该这样做,假设"不在内部"意味着文本节点不应该是"a"或"script"或"style"元素的后代.如果"not inside"仅表示不应该是孩子,那么使用parent :: a等等而不是祖先:: a.

//text()[normalize-space() and not(ancestor::a | ancestor::script | ancestor::style)]
Run Code Online (Sandbox Code Playgroud)