我知道如何从DOM中快速提取文本节点:
document.evaluate('//text()', document, null, XPathResult.ANY_TYPE, null)
但有没有一种简单的方法可以从SCRIPT,STYLE或其他未向用户显示的标签中排除文本?
类似的东西:
'//text()[ parent.name not in ("SCRIPT", "STYLE") ]'
谢谢, 麦克
答案 0 :(得分:5)
//*[not(self::script or self::style)]/text()
答案 1 :(得分:1)
除了Nick Jones正确答案,对于更复杂的排除,您应该使用XPath节点集排除表达式:
$ns1[not(count(.|$ns2)=count($ns2))]
在这种情况下:
//*[not(count(.|//script|/*/*/style)=count(//script|/*/*/style))]/text()