C# HTMLAgilityPack解析另一个表单元格中的表
我有下表:C# HTMLAgilityPack解析另一个表单元格中的表,c#,arraylist,html-agility-pack,C#,Arraylist,Html Agility Pack,我有下表: <table> <tr><th>header1</th><th>header2</th><th>header3</th></tr> <tr><td>value01</td><td>value02</td><td>value03</td></tr> <tr
<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>
我的代码怎么了?我相信你的第一行
foreach (HtmlNode table in hdoc.DocumentNode.SelectNodes("//table"))
将选择所有表-在任何级别,包括嵌套表
Per:
//从当前节点中选择文档中与
选择,无论他们在哪里
所以,将您的第一行更改为
foreach (HtmlNode table in hdoc.DocumentNode.SelectNodes("/html/body/table"))
看看是怎么回事。我实际上在cell.SelectNodes//table中更改了每个HtmlNode子表的这一行,正如您所说,它起了作用。是的,这可以解决问题,但只是巧合而已。您应该真正调查hdoc.DocumentNode.SelectNodes//table的结果。我几乎可以保证它没有选择您认为或想要的内容。我在hdoc.DocumentNode.SelectNodes/html/body/table中将其更改为HtmlNode表编辑了我的答案以反映这一点。很高兴你把它整理好了。
foreach (HtmlNode table in hdoc.DocumentNode.SelectNodes("/html/body/table"))