如何使用HtmlAgilityPack从html中获取父行节点的计数
本文关键字:节点 获取 HtmlAgilityPack 何使用 html | 更新日期: 2023-09-27 18:19:31
下面是我的html页面:
使用Html Agility Pack,我需要获得Main Table Main Rows。意思是在下页中,只有一个主表,主表下只有三个主行。
我需要得到3的计数,不包括所有内部TR。
请帮忙。
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Untitled Page</title>
</head>
<body style="width: 800">
<table width="700" style="background-repeat: no-repeat;">
<tr>
<td>
<table width="700">
<tr>
<td width="20%"></td>
<td width="60%" align="center" style="font-family: Arial; font-size: 12pt;"> SUMMARY </td>
<td width="20%"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="700">
<tr>
<td width="20%"></td>
<td width="60%" align="center" style="font-family: Arial; font-size: 12pt;"> SUMMARY </td>
<td width="20%"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table width="700">
<tr>
<td width="20%"></td>
<td width="60%" align="center" style="font-family: Arial; font-size: 12pt;"> SUMMARY </td>
<td width="20%"></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
代码:
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlFile);
int count = 1;
HtmlNodeCollection tables = doc.DocumentNode.SelectNodes("//table");
foreach (HtmlNode table in tables)
{
var rows = doc.DocumentNode.SelectNodes("//tr");
//here i need to get those 3 rows only.
//but instead i am getting all inner TR also.
foreach (HtmlNode tr in rows)
{
}
}
您正在选择所有的表。
试着只选择身体的子表,比如:
SelectSingleNode("//body/table");
然后,计算该节点中的TR。
或者,尝试一步到位:
SelectNodes("//body/table/tr");