C # htmlagilitypack XPath 도움말

c# html-agility-pack xpath

문제

이 xpath 표현식이 작동하지 않습니다.

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

이 HTML을 파싱하려면 :

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

링크 노드 (a)에 도착하려고합니다. 문서에는 동일한 div / h4 계층 구조를 가진 다른 html 태그가 있으며, 유일한 차이점은 h4 태그의 innertext입니다. 그렇다면 div 클래스 (1)에 내부 텍스트 "dir"이있는 하위 h4 노드가 있고 (2) 첫 번째 링크 노드 (a)가 있는지 확인하는 방법은 무엇입니까? 링크가 h4의 다음 형제라고 가정하지 마십시오.

수락 된 답변

이 xpath를 사용할 수 없습니까?

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

child[0] 은 유효한 축 AFAIK가 아니므로 실패합니다.

더 완벽한 예제 HTML을 보지 않고도이 조건만으로도 조건을 충족시킬 수 있는지 여부는 알 수 없습니다. 그러나 이것은 확실히 이것을 위해 작동합니다.

div 내에 여러 h4 요소가 있고 첫 번째 요소 만 확인하려는 경우 :

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

인기 답변

div 클래스 (1)에 내부 텍스트가 "dir"인 ​​하위 h4 노드가 있고 (2) 첫 번째 링크 노드 (a)를 가져 오는 지 확인하려면 어떻게해야합니까?

용도:

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



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.