C # htmlagilitypack Справка XPath - PullRequest
1 голос
/ 26 июля 2011

У меня есть это выражение xpath, которое не работает

"//div[child[0]::h4[text()[contains(.,'Dir')]]]/a"

Для анализа этого HTML:

<div class="txt"> 
      <h4 class="c1"> 
        Dir
      </h4> 
    <a  href="/name/myname/">Bob</a>
</div> 

Я пытаюсь добраться до узла ссылки (а). В документе есть другие html-теги с той же иерархией div / h4, с единственным отличием - внутренний текст тега h4. Итак, как мне проверить, что у класса div (1) есть подчиненный узел h4 с внутренним текстом «dir» И (2) получить первый узел ссылки (a). Не думайте, что ссылка - следующий брат h4.

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

Не могли бы вы просто использовать этот xpath?

"//div[h4[contains(text(),'Dir')]]/a"

child[0] не является допустимой осью AFAIK, поэтому она не работает.

Я не знаю, удовлетворит ли это само по себе ваши условия, не увидев более полный пример HTML. Но это, безусловно, работает для этого.

Если возможно, что в div есть несколько элементов h4, и вы хотите проверить только первое:

"//div[h4[1][contains(text(),'Dir')]]/a"
1 голос
/ 26 июля 2011

Как проверить, что у класса div (1) есть подчиненный узел h4 с внутренним текстом "dir" И (2) получить первый узел ссылки (a)

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

"//div[@class='txt' and h4[contains(.,'Dir')]]/a[1]"
...