如何检索HTML DOM中的所有文本但排除SCRIPT和STYLE标记?

时间:2010-09-07 08:49:11

标签: javascript dom xpath

我知道如何从DOM中快速提取文本节点:

document.evaluate('//text()', document, null, XPathResult.ANY_TYPE, null)

但有没有一种简单的方法可以从SCRIPT,STYLE或其他未向用户显示的标签中排除文本?

类似的东西:

'//text()[ parent.name not in ("SCRIPT", "STYLE") ]'

谢谢, 麦克

2 个答案:

答案 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()