Xpath предшествующий родственный брат (с использованием HtmlAgilityPack и VB)

Я использую HtmlAgilityPack/HAP, чтобы использовать Xpath с HTML-документами.

Мне нужна помощь в выборе предыдущего элемента div class="address" в этом URL: www.yellowpages.ca/search/si-geo/1/sh/Ottawa,+ON Брат, которого я хочу, это h3 class="listingTitleLine"

Вот скриншот:

http://i55.tinypic.com/25gc4qo.png Могу ли я получить некоторую помощь, пожалуйста.

-Dd,


person Datadayne    schedule 12.09.2010    source источник


Ответы (1)


Чтобы выбрать элемент preceding-sibling H3 со значением атрибута класса "listingTitleLine":

preceding-sibling::h3[@class='listingTitleLine']

Чтобы выбрать каждый из элементов H3 со значением атрибута класса "linstingTitleLine", которые предшествуют элементам div со значением атрибута класса "адрес":

//div[@class='address']/preceding-sibling::h3[@class='listingTitleLine']
person Mads Hansen    schedule 12.09.2010
comment
ваши выражения XPath будут выбирать все предыдущие одноуровневые элементы h3. Если всегда есть только один, мы в порядке. В противном случае @Datadyne должен использовать preceding-sibling::h3[@class='listingTitleLine'] [1] для получения ближайшего предшествующего элемента h3 того же уровня. - person LarsH; 13.09.2010
comment
@LarsH, если бы я хотел получить подсчет различного количества узлов ‹h3› (у которых нет атрибутов) только до ‹h2›, который им предшествует (и до следующего ‹h2›, следующего за ними), что бы я изменил здесь: //h2[3]/following-sibling::h2[4]/preceding-sibling::h3 ? Может быть 3 ‹h3› в качестве следующих братьев и сестер для ‹h2›, а у следующего ‹h2› может быть 5, мне нужно получить точное число между ‹h2›. На данный момент все ‹h3› в корне учитываются при использовании фрагмента примера. ТИА - Джереми - person Jerry Of Perth; 18.12.2013
comment
@JerryOfPerth, это хороший вопрос. На SO есть ответы на этот тип вопроса (выбор узлов между двумя указанными заметками), но найти их с помощью поиска может быть непросто. Если вы не можете их найти, я бы рекомендовал опубликовать новый вопрос. - person LarsH; 18.12.2013
comment
Спасибо за быстрый ответ @LarsH. Я работал над этим в течение 2 дней, просмотрел и протестировал буквально более 50 сообщений SO, а также десятки внешних, и, честно говоря, только что наткнулся на ваш комментарий выше: ваши выражения XPath выберет все предыдущие одноуровневые элементы h3, которые являются наиболее близкими, которые я нашел, чтобы хотя бы объяснить/подтвердить, к чему я сузил свою проблему, я подумал, что, возможно, было что-то незначительное, чтобы оглянуться только на целевой узел ( h2[3]), поэтому здесь я и сделал попытку. Я опубликую как вопрос. Еще раз спасибо. - person Jerry Of Perth; 18.12.2013
comment
@JerryOfPerth: хорошо. Пожалуйста, сообщите мне мое имя пользователя, чтобы я увидел ваш вопрос, и обязательно упомяните, подходит ли вам XPath 2.0, потому что это будет иметь большое значение. - person LarsH; 18.12.2013
comment
Я обязательно это сделаю. Поздно здесь, в AU, сделаю это в утра. Еще раз спасибо. - person Jerry Of Perth; 18.12.2013