如何從特定單元格中獲取值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配備了一個XPATH評估程序,它在解析的HTML節點上遵循.NET XPATH語法 。請注意,與此庫一起使用的XPATH表達式要求元素和屬性名稱為小寫,與原始HTML源無關。

因此,在您的情況下,您可以使用如下表達式獲取第3列,第2行,第2個表的單元格:

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表示從root用戶遞歸獲取任何TABLE元素。 [2]意味著拿第二張桌子。

/tr表示從當前表中獲取任何TR元素。 [2]意味著走第2排。

/td表示從當前行獲取任何TD元素。 [3]意味著採取第[3]細胞。

你可以在這裡找到很好的XPATH教程: XPath教程




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因