htmllagilitypack解析表中的另一个表单元格
本文关键字:另一个 表单 单元格 htmllagilitypack | 更新日期: 2023-09-27 18:17:16
我有以下表格:
<table>
<tr><th>header1</th><th>header2</th><th>header3</th></tr>
<tr><td>value01</td><td>value02</td><td>value03</td></tr>
<tr><td>value11</td><td>value12</td><td>value13</td></tr>
<tr>
<td colspan="3">
<table>
<tr><td>subvalue01</td><td>subvalue02</td></tr>
</table>
</td>
</tr>
</table>
我使用此代码将主表单元格值保存为另一个ArrayList
中的单独ArrayList
和子表单元格值。但是我的ArrayList
为子表单元格值保存整个值,包括表和子表:
foreach (HtmlNode table in hdoc.DocumentNode.SelectNodes("//table"))
{
///This is the table.
foreach (HtmlNode row in table.SelectNodes("tr").Skip(1))
{
///This is the row.
foreach (HtmlNode cell in row.SelectNodes("th|td"))
///can also use "th|td", but right now we ONLY need td
{
//This is the cell.
if (cell.InnerHtml.Contains("<table>"))
{
foreach (HtmlNode subtable in cell.SelectNodes("//table"))
{
foreach (HtmlNode subrow in subtable.SelectNodes("tr").Skip(1))
{
foreach (HtmlNode subcell in subrow.SelectNodes("th|td"))
{
arrSubList.Add(subcell.InnerText);
}
}
}
}
else
{
arrList.Add(cell.InnerText);
}
}
}
}
我的代码有什么问题?
我相信你的第一行
foreach (HtmlNode table in hdoc.DocumentNode.SelectNodes("//table"))
将选择所有表-在任何级别(包括嵌套表)。
/: http://www.w3schools.com/XPath/xpath_syntax.asp
//从当前节点中选择与
因此,将第一行更改为
foreach (HtmlNode table in hdoc.DocumentNode.SelectNodes("/html/body/table"))
看看效果如何