html 문서에서 가치 얻기

c# document html html-agility-pack nodes

문제

HTML 문서에서 가치를 얻는 데 도움이 될까요?

다음은 문서 내용입니다.

<html>
  <head>
    <style>body, table, input, select, textarea, button {   font: normal 1em Verdana, Sans-Serif; } body {  font-size: 0.8em; } a { color:#336600; } b { color:#003300; }.header {font-family: verdana; font-size: 15px; color:#003300; font-weight:bold;}.back {background-color:#DBF0DB;}.back2 {background-color:#009933;}            
    </style>
  </head>
  <body>
    <table border="0" cellpadding="3" cellspacing="1" width="100%">
      <tr>
        <td colspan="2" class="header">#827216</td>
      </tr>
    </table>
<body>
</html> 

# 827216 값을 검색하고 싶습니다.

다음은 올바르게 작동하지 않는 코드입니다.

hdoc.LoadHtml(FileContents);

var xID = hdoc.DocumentNode.SelectNodes("/html/body/table/tr/");

그리고 여기에 오류가 있습니다 :

표현식은 노드 집합으로 평가되어야합니다.

수락 된 답변

이렇게하면 형식이 잘못된 HTML과 상관없이 콘텐츠가 제공됩니다.

HtmlNodeCollection tables = hdoc.DocumentNode.SelectNodes("//table[1]");
HtmlNodeCollection cells = tables[0].SelectNodes("//tr/td");
var cellText = cell[0].InnerHtml;

HTML을 수정해야하며 <body> 태그를 닫아야합니다.


인기 답변

HTML 코드가 유효한 XML이 아닙니다. body 태그가 닫히지 않았습니다. 또한 XPath 표현식은 td 요소를 가져 오기 위해 /html/body/table/tr/td 여야합니다. 또한 하나의 요소를 얻으려면 selectSingleNode 를 사용해야합니다.



Related

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