我有以下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元素不包含表格。在上述情况中,仅选择标题header1
和header3
。
目前我所拥有的是
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();
}
答案 0 :(得分:0)
试试这个
for (Element e : table.select(" > tbody > tr:not(:has(table)) > th")) {
//DO SOMETHING WITH e
}
选择器选择tr的所有子节点,不包含表格,反过来又是上下文元素的tbody的子节点。
BTW我将你的while循环更改为for循环,但这个想法保持不变。