HTMLDocument에서 특정 텍스트의 상위 div 찾기

.net html-agility-pack

문제

특정 텍스트가 들어있는 div의 전체 InnerText를 반환하고 싶습니다.

예 : HTMLDocument (HTMLAgilityPack)에서 "hello world"를 검색하고 "hello world"가있는 div의 전체 InnerText를 반환하고자합니다.

이것이 제가 시도한 것입니다 :

HtmlNode textNode = doc.DocumentNode.SelectNodes("//text()[contains(., 'hello world')]/..")

이것은 특정 텍스트가있는 HtmlNode를 반환했습니다.

이제 완전한 innerText를 반환하는 textNode의 첫 번째 부모 div를 얻고 싶습니다.

미리 감사드립니다.

수락 된 답변

이것은 내가 생각하기에 ...

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

그리고 이것은 아마도 더 나은 해결책 일 것입니다 :

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

또는 Linq-to-XML 표기법을 사용하십시오.

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

또는

var nodes2 = doc.DocumentNode.SelectNodes("//div[contains(.//text(), 'Hello World')]");

인기 답변

HTMLAgilityPack에 대한 경험이 없지만 XPath 구문과 비슷합니다. 어떤 경우에는 ".."가 발견 된 요소의 부모를 반환해야합니다.

나는 이것을 시험하기 위해이 웹 사이트를 사용했다 : http://ponderer.org/download/xpath/

입력 한 경우

//li[contains(., 'about')]/../..

텍스트 상자에서 녹색 요소 인 ul 요소 (li 요소 포함)를 포함하는 div를 강조 표시합니다.

이게 니가 찾고 있던거야?




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