HTMLAgilityPack 및 XPath를 사용하여 childNodes를 가져 오는 데 문제가 있음

c# html-agility-pack xpath

문제

다음 HTML을 구문 분석하려고합니다. "제목"값을 가진 h4 태그 아래의 모든 링크의 innertext를 가져와야합니다.

<h4>Title</h4>
    <ul>
         <li>
             <a>One</a>
         </li>
         <li>
             <a>Two</a>
         </li>
         <li>
             <a>Three</a>
         </li>
    </ul>

다음 코드를 사용하여 h4 요소를 확인할 수 있습니다.

<h4>Title</h4>
    <ul>
         <li>
             <a>One</a>
         </li>
         <li>
             <a>Two</a>
         </li>
         <li>
             <a>Three</a>
         </li>
    </ul>

문제는 노드를 얻으려고 시도 할 때 발생합니다. 다음 코드를 시도했지만 아무도 작동하지 않습니다.

<h4>Title</h4>
    <ul>
         <li>
             <a>One</a>
         </li>
         <li>
             <a>Two</a>
         </li>
         <li>
             <a>Three</a>
         </li>
    </ul>

수락 된 답변

내가 수집 할 수있는 것으로부터, 당신이 사용하고있는 xpath가 a 노드가 h4 노드의 자식이라고 기대하기 때문에 작동하지 않는다고 생각합니다. 테스트하지 않았으므로 요구 사항을 해석하지 못할 수도 있습니다 ...

var links = document.DocumentNode.SelectNodes("//h4[contains(text(),'Title')]/following-sibling::*[1]//a");

이렇게하면 h4 노드의 첫 번째 형제 노드에있는 모든 노드가 생성됩니다. 따라서 예제 HTML에서는 ul 노드 내의 모든 노드를 가져야합니다.

희망이 도움이




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