Jsoup选择条件

时间:2011-12-05 10:05:02

标签: jsoup

我有以下html表元素:

<table class='myTable'>
 <tbody>
   <tr>
    <th>header1</th>
    <td>data1</td>
   </tr>
   <tr>
    <th>header2</th>
    <td><table><tbody><tr><th>subheader1</th><td>subdata1</td></tr>
                      <tr><th>subheader2</th><td>subdata2</td></tr>
                      </tbody></table></td>
   </tr>
   <tr>
    <th>header3</th>
    <td>data3</td>
   </tr>
   ....
 <tbody>
</table>

如何选择表格中的标题,其中标题的下一个td元素不包含表格。在上述情况中,仅选择标题header1header3

目前我所拥有的是

Elements elements = doc.select("table[class=" + myTable + "]);
Element table;
if(elements.size()>0){
  table = elements.get(0);
}
else{
  return someMyObj;
}
Iterator<Element> ite = table.select("th AND SOME CONDITIONS").iterator();
while(ite.hasNext()){
     Element header = ite.next();
}

1 个答案:

答案 0 :(得分:0)

试试这个

    for (Element e : table.select(" > tbody > tr:not(:has(table)) > th")) {
        //DO SOMETHING WITH e
    }

选择器选择tr的所有子节点,不包含表格,反过来又是上下文元素的tbody的子节点。

BTW我将你的while循环更改为for循环,但这个想法保持不变。