如何获取特定单元格的值C#Html-Agility-Pack
问题描述:
如何从文档的第二个表格中的特定位置获取值。我需要下面的html文档中的第二个单元格的值和第三列的值。我该怎么做呢。如何获取特定单元格的值C#Html-Agility-Pack
<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 syntax。请注意,与此库一起使用的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
意味着从根本得到任何表元素递归。 [2]
表示拿第二张表。
/tr
表示从当前表中获取任何TR元素。 [2]
代表第二排。
/td
表示从当前行中获取任何TD元素。 [3]
表示取第3个单元格。
你可以在这里找到很好的XPATH教程:XPath Tutorial
+0
非常感谢! – user1944272 2013-05-10 15:06:33
应该继承/重用的XmlDocument。查询/过滤器语法使用xpath。 例如: HtmlAgilityPack.HtmlDocument.DocumentNode.SelectNodes(“// div [@class = \”myContent \“]”); – Kelmen 2013-05-10 04:10:58