Проверка структуры HTML с XPATH, любое количество узлов - PullRequest
2 голосов
/ 23 октября 2011

Я хочу проверить структуру некоторого фрагмента HTML-разметки, просто проверяя структуру. Например, мне нужно проверить, что ГДЕ-ТО в теге <list-item-canvas> есть тег <<code>image name='category-pic'>.

Я пишу:

//div[@class='list-item-canvas'][1]/*/img[@name='category-pic']

Это работает, если <img> является вторым узлом после любого ('*') узла в иерархии, НО , если у меня <img> где-то глубоко в структуре, И Я не хочу заботиться об иерархии уровней как тогда мне написать свой xpath-запрос? Я думаю, что вместо '*' я мог бы написать '**', но я не могу ..

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 23 октября 2011
* +1000 * Используйте
(//div[@class='list-item-canvas'])[1]//img[@name='category-pic']

Это выбирает любое img строковое значение атрибута name которого 'category-pic', и это потомок первого (в порядке документа) div строковое значение атрибута class 'list-item-canvas'.

Обратите внимание на скобки, окружающие подвыражение :

(//div[@class='list-item-canvas'])[1]

это сильно отличается от:

 //div[@class='list-item-canvas'][1]

последний выбирает каждый div элемент в документе, который является первым div дочерним по отношению к его родительскому элементу - и потенциально может быть несколько таких элементов.

2 голосов
/ 23 октября 2011

Сделайте следующее:

//div[@class='list-item-canvas'][1]//img[@name='category-pic']

// до img позволяет вам найти любого потомка div, который является img, вместо просто детей или внуков div.

Также вы уверены, что хотите [1] там?Это может быть не то, что вы думаете.

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