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"))