Как получить H1, H2, H3, ... используя одно выражение xpath - PullRequest
18 голосов
/ 03 ноября 2011

Как я могу получить содержимое H1, H2, H3 в одном выражении xpath?

Я знаю, что могу это сделать.

//html/body/h1/text()
//html/body/h2/text()
//html/body/h3/text() 

и так далее.

1 Ответ

29 голосов
/ 03 ноября 2011

Использование :

/html/body/*[self::h1 or self::h2 or self::h3]/text()

Следующее выражение неверно :

//html/body/*[local-name() = "h1"  
           or local-name() = "h2"  
           or local-name() = "h3"]/text()  

, поскольку оно может выбирать текстовые узлы, которые являются дочернимииз unwanted:h1, different:h2, someWeirdNamespace:h3.

Другая рекомендация: всегда избегайте использования //, когда структура XML-документа статически известна.Использование // чаще всего приводит к значительной неэффективности, поскольку вызывает обход полного дерева (вложенного) документа, повернутого в узле контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...