Как получить весь текст в HTML DOM, но исключить теги SCRIPT и STYLE? - PullRequest
2 голосов
/ 07 сентября 2010

Я знаю, как быстро извлечь текстовые узлы из DOM:

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

Но есть ли простой способ исключить текст из сценария, стиля или других тегов, которые не отображаются пользователю?

Что-то вроде:

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

Спасибо, Mike

Ответы [ 2 ]

5 голосов
/ 07 сентября 2010
//*[not(self::script or self::style)]/text()
1 голос
/ 07 сентября 2010

Помимо правильного ответа Ника Джонса, для более сложного исключения следует использовать выражение исключения из набора узлов XPath:

$ns1[not(count(.|$ns2)=count($ns2))]

В этом случае:

//*[not(count(.|//script|/*/*/style)=count(//script|/*/*/style))]/text()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...