HTMLAgilityPack - 寻找最内层 table

HTMLAgilityPack - Finding the innermost table

我不确定如何添加动态 Xpath 以使我们能够在 HTML 中找到最内层的表(作为 IEnumerable/List),无论它们处于什么级别

基本上如果我有:

    <table>
       <tr>
         <td>
           <table>
              <tr>
                 <td>
                     <table><tr><td>thisguy</td></tr></table>
                 </td>
              </tr>
                 <td>
                     <table><tr><td>thisguy</td></tr></table>
                 </td>
              </tr>
           </table>
        </td>
       </tr>
    </table>

我正在尝试 return 包含此人的 td 表。当然这只是一个例子。真正的表格不包含这个。

我尝试了一个递归函数,但结果是:

private static IEnumerable<HtmlNode> GetBottomMostTable(HtmlNode nodeToCheck)
    {
        var isTableExist = nodeToCheck
                    .Descendants("table")
                    .Any();
        if (isTableExist)
        {
            var bottomMost = GetBottomMostTable(nodeToCheck.ChildNodes.Descendants("table").First());
        }else
        {
            return nodeToCheck
        }
    }

试试这个代码:

var innerTables = doc.DocumentNode.SelectNodes("//table[not(descendant::table)]");

那里使用的 XPath 将获得所有 table 个没有 table 作为后代的节点。