C # htmlagilitypack Справка XPath

c# html-agility-pack xpath

Вопрос

У меня есть это выражение 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> 

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

Принятый ответ

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

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

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

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

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

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

Популярные ответы

Как проверить, что класс div (1) имеет узел sub h4 с внутренним текстом «dir» AND (2), получают первый узел ссылки (a)

использовать:

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


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow