SelectSingleNode를 사용하는 htmlagilitypack

c# html-agility-pack selectsinglenode xpath

문제

나는 HtmlAgilityPack을 사용하여 아래의 값을 얻으려고 노력했지만 성공하지는 못했다. SelectSingleNode를 사용하고 있습니다.

여기 내 HTML입니다.

<html>
<body>
    <table>
        <tr><td>One</td></tr>       
    </table>
</body>
</html>

아래는 코드 숨김입니다.

HtmlDocument doc = new HtmlDocument();
doc.Load("C:\\test.html");

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tbody/tr/td");
Console.WriteLine(test.InnerHtml);

test (HtmlNode) 변수가 null입니다.

어떻게 One 의 가치를 얻을 것인가?

수락 된 답변

그림과 같이 샘플이없는 tbody 당신의 XPath를 더 노드 (반환하지 않을 것이다, 그래서 노드를 null 에 대한 SelectSingleNode ).

고치다:

HtmlNode test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td");

디버깅 팁 : XPath를 느리게 빌드하고 각 결과 / 하위 노드를 확인하십시오.

     "/html/body/table/" - some children
     "/html/body/table/tbody/"  - null
     "/html/body/table/tr/" - some children
     "/html/body/table/tr/td" - score

인기 답변

SelectSingleNode에서 XPath를 사용하는 경우 : XML에서 개별 요소를 가져 오는 경우 text() 를 사용해야 text() .

var test = doc.DocumentNode.SelectSingleNode("/html/body/table/tr/td/text()");

또한 tbody 를 제거해야합니다. 당신의 html에는 tbody 가 없습니다.



Related

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