Jsoup выбрать при условии - PullRequest
       7

Jsoup выбрать при условии

0 голосов
/ 05 декабря 2011

У меня есть следующий элемент таблицы 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();
}

1 Ответ

0 голосов
/ 05 декабря 2011

Попробуйте это

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

Селектор выбирает все дочерние элементы tr, которые не содержат таблицы и, в свою очередь, являются дочерними элементами tbody элемента контекста.

Кстати, я изменилваш цикл while для цикла for, но идея остается прежней.

...