Html 민첩성 팩, 노드에서 SelectNodes

.net c# html-agility-pack

문제

왜 내 문서의 모든 <li> 요소를 선택합니까?

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);

var travelList = new List<Page>();
var liOfTravels = doc.DocumentNode.SelectSingleNode("//div[@id='myTrips']")
                     .SelectNodes("//li");

내가 원하는 것은 "myTrips"라는 id 를 가진 <div> 의 모든 <li> 요소를 얻는 것입니다.

수락 된 답변

id가 "myTrips"인 div에서만 selectNodes를 수행 할 것으로 예상하기 때문에 다소 혼란 스럽습니다. 그러나 다른 SelectNodes ( "// li")를 수행하면 문서 상단에서 다른 검색을 수행합니다.

내가 진술 하나를 결합하여이 문제를 해결했지만 그것은 단지 "mytrips"id를 가진 div가 하나 뿐인 웹 페이지에서만 작동합니다. 쿼리는 다음과 같습니다.

doc.DocumentNode.SelectNodes ( "// div [@ id = 'myTrips'] // li");


인기 답변

var liOfTravels = doc.DocumentNode.SelectSingleNode("//div[@id='myTrips']")
                 .SelectNodes(".//li");

두 번째 줄의 점에 주목하십시오. 기본적으로이 점에서 HTMLAgitilityPack은 XPath 구문을 완전히 사용하지만 이러한 쿼리가 실제로 동일하기 때문에 결과는 비 직관적입니다.

var liOfTravels = doc.DocumentNode.SelectSingleNode("//div[@id='myTrips']")
                 .SelectNodes(".//li");



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