1

如何从文档第二个表中的特定位置获取值。我需要下面 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,但此时它对我来说太神秘了。

4

1 回答 1

2

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表示从根递归获取任何 TABLE 元素。[2]意思是拿第二张桌子。

/tr表示从此当前表中获取任何 TR 元素。[2]意思是走第二排。

/td表示从此当前行获取任何 TD 元素。[3]表示取第 3 个单元格。

你可以在这里找到好的 XPATH 教程:XPath 教程

于 2013-05-10T07:19:23.303 回答