Выражения XPath - найти элементы без указания всего пути - PullRequest
1 голос
/ 19 января 2012

Я делаю некоторые снимки экрана с библиотекой, которая принимает выражения XPath, и заметил, что несколько страниц похожи, но различны.

Есть ли способ свободно сказать: «Принесите мне div, которые имеют class = 'mytarget', но существуют как дочерние элементы div с class = 'nav' и точный путь неизвестен между nav и mytarget."

<div class="nav">

<div>

??????

<div class="mytarget"></div>

??????

</div>

</div>

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Да, используя ось descendant-or-self (//):

//div[@class='nav']//div[@class='mytarget']

Или, если в этих элементах может быть более одного имени класса, это еще лучше:

//div[contains(concat(' ', @class, ' '), ' nav ')]//
      div[contains(concat(' ', @class, ' '), ' mytarget ')]

Предупреждение: это может быть очень неэффективно для больших документов.Вы должны использовать абсолютные пути везде, где структура известна.Прибегайте к // только когда структура неизвестна.

0 голосов
/ 20 января 2012

Вот для чего используются выражения "//". Что-то вроде:

//*[@class="nav"]//*[@class="mytarget"]

http://www.w3schools.com/xpath/xpath_syntax.asp

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