특정 셀에서 값을 얻는 방법 C # Html-Agility-Pack

c# html-agility-pack html-parsing

문제

문서에서 두 번째 테이블의 특정 위치에서 값을 얻으려면 어떻게해야합니까? 아래 html 문서에서 두 번째 셀의 값과 세 번째 열의 값이 필요합니다. 어떻게해야합니까?

<html>
<head>
<title>Tables</title>
</head>
<body>
<table border="1">
  <tr>
    <th>Room</th>
    <th>Location</th>
  </tr>
  <tr>
    <td>Paint</td>
    <td>A4</td>
  </tr>
  <tr>
    <td>Stock</td>
    <td>B3</td>
  </tr>
  <tr>
    <td>Assy</td>
    <td>N9</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <th>Product</th>
    <th>Mat'l</th>
    <th>Weight</th>
    <th>Size</th>
  </tr>
  <tr>
    <td>Cover</td>
    <td>Plastic</td>
    <td>4</td>
    <td>16</td>
  </tr>
  <tr>
    <td>Retainer</td>
    <td>Steel</td>
    <td>12</td>
    <td>8</td>
  </tr>
  <tr>
    <td>Pin</td>
    <td>Bronze</td>
    <td>18</td>
    <td>7</td>
  </tr>
</table>
<p></p>
<table border="1">
  <tr>
    <th>Process</th>
    <th>Location</th>
    <th>Number</th>
  </tr>
  <tr>
    <td>Trim</td>
    <td>S2</td>
    <td>8</td>
  </tr>
  <tr>
    <td>Finish</td>
    <td>D2</td>
    <td>3</td>
  </tr>
</table>
</body>
</html>

감사!

또한 ... 초보자를 도와주세요! 나를 Html-Agility-Pack (HAP)의 구문을 이해하는 데 도움이되는 자료로 안내해주십시오. HAP 용 CHM 파일이 있습니다. 사용하려고했는데 VS의 객체 브라우저를 HAP 용으로 사용하려고했지만이 시점에서 나에게 너무 비현실적입니다.

수락 된 답변

Html Agility Pack에는 구문 분석 된 HTML 노드에 대한 .NET XPATH 구문 을 따르는 XPATH 평가 기가 탑재되어 있습니다. 이 라이브러리에서 사용되는 XPATH 표현식은 요소 및 속성 이름이 원래 HTML 소스와 독립적으로 소문자 여야 함을 유의하십시오.

귀하의 경우에는 다음과 같은 표현식을 사용하여 세 번째 열, 두 번째 행, 두 번째 표의 셀을 가져올 수 있습니다.

HtmlDocument doc = new HtmlDocument();
doc.Load(YouTestHtmlFilePath);

HtmlNode node = doc.DocumentNode.SelectSingleNode("//table[2]/tr[2]/td[3]");
Console.WriteLine(node.InnerText); // will output "4"

//table 은 루트로부터 재귀 적으로 TABLE 엘리먼트를 얻는다는 것을 의미한다. [2] 는 두 번째 테이블을 의미합니다.

/tr 은 현재 테이블에서 TR 요소를 가져온다는 것을 의미합니다. [2] 는 두 번째 줄을 의미합니다.

/td 는이 현재 행에서 TD 요소를 가져 오는 것을 의미합니다. [3] 은 3 번째 셀을 의미합니다.

좋은 XPATH 튜토리얼은 XPath 튜토리얼을 참조하십시오.




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