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

3
我有一个HTML文档,需要获取DOM中第五个table元素,而不是第五个子table。我的问题在于这个5个table嵌套结构可能包含任意数量的div元素,所以我无法使用绝对路径,例如:
/html/body/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/table 例如:
<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>
4个回答

4

用途:

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

此代码选择文档中第一个恰好有四个名为table的祖先元素的table


3

我相信你希望在每个元素之间使用//表达式,从而形成完整的表达式:

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

这将选择任何路径中包含4个表格的表格。

1
XElement doc = XElement.Parse(yourXml); 
var requiredTable = doc.Descendants("table").ElementAt(4);

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接