我有一个我正在使用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) {
...
}
但是我当然得到了表的行以及内部表中的行,所以我不能只检查curr行是否包含一个表并继续循环。
如何仅从主表中获取第1行和第2行并跳过第3行及其内部行?
答案 0 :(得分:2)
这不是最优雅的解决方案,但它对我有用:
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>