在HTML文档中选择第N个子节点

c# html html-agility-pack xpath

我有一个html文档,我需要获取所有table元素,这些元素是DOM中的第5个表格,不要与第5个子table混淆。我的问题是这5个table深层结构可以包含在任意数量的div元素中,所以我不能使用绝对路径,如

/ HTML /体/表/ tbody的/ TR / TD /表/ tbody的/ TR / TD /表/ tbody的/ TR / TD /表/ tbody的/ TR / TD /表

例如:

<body>    
    <table>    
        <table>
            <table>
                <table>
                   <!--Grab this one -->
                   <table>
                   </table>
                </table>
            </table>
       </table>
    </table>
</body>

或这个:

 <body> 
    <div> <!--Could be wrapped more than just once though -->  
        <table>    
            <table>
                <table>
                    <table>
                       <!--Grab this one -->
                       <table>
                       </table>
                    </table>
                </table>
           </table>
        </table>
    </div>
</body>

一般承认的答案

使用

(//table[count(ancestor::table) = 4])[1]

这将选择第一table具有完全相同名为四个祖,文件中table


热门答案

我相信你想要在每个元素之间使用//表达式,制作完整的表达式:

//table//table//table//table//table

这将选择在其路径中任何位置具有4个表的任何表



Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow