0

我有一个我正在用 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's 或任何东西可以消除页面上的内部/外部表格的歧义。

我想遍历其中没有表格的每个外部行。目前我有:

Elements rows = document.select("tr");
for (Element row : rows) {
...
}

但是当然我得到了表的行以及内表中的行,所以我不能只检查 curr 行是否包含一个表并继续循环。

如何仅从主表中获取第 1 行和第 2 行并跳过第 3 行及其内行?

4

1 回答 1

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>
于 2013-10-15T11:32:08.387 回答