HTMLAgilityPack - 查找最里面的表

时间:2018-04-23 12:11:20

标签: c# html html-agility-pack

我不确定如何添加动态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>

我试图用包含thisguy的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
        }
    }

1 个答案:

答案 0 :(得分:1)

试试这段代码:

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

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