我有一个正在用 Jsoup 解析的文档,其结构如下:
<body>
<table cellspacing="0">
<tr>
<td>one</td>
</tr>
<tr>
<td>two</td>
</tr>
<tr>
<td>
<table cellspacing="0">
<tr>
<td>inner one</td>
<td>inner two</td>
</tr>
<tr>
<td>inner three</td>
<td>inner four</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
页面上没有 id
或任何可以消除内部/外部表格歧义的内容。
我想循环遍历内部没有表格的每个外部行。目前我有:
Elements rows = document.select("tr");
for (Element row : rows) {
...
}
但是,当然我得到的是表中的行以及内表中的行,所以我不能只检查当前行是否包含表并继续循环。
如何仅从主表中获取第 1 行和第 2 行并跳过第 3 行及其内部行?
最佳答案
这不是最优雅的解决方案,但它对我有用:
Elements rows = document.select("body > table > tbody > tr:not(:has(table))");
for(Element row : rows){
...
}
真正奇怪的是,我复制了您的 HTML,但仍然必须使用 tbody 选择器。如果我只是执行 Elements rows = document.select("body > table > tr:not(:has(table))");
它不会捕获任何内容。
打印出我得到的结果:
<tr>
<td>one</td>
</tr>
<tr>
<td>two</td>
</tr>
关于java - 只获取嵌套表的父行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19379452/