2013-05-10 68 views
0

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

+0

应该继承/重用的XmlDocument。查询/过滤器语法使用xpath。 例如: HtmlAgilityPack.HtmlDocument.DocumentNode.SelectNodes(“// div [@class = \”myContent \“]”); – Kelmen 2013-05-10 04:10:58

回答

1

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

相关问题