2013-08-23 6 views
0

Я пытаюсь разобрать сайт, который используетJsoup игнорировать вложенные теги при использовании выберите

<b>Header</b>Data<strong>Header</strong>Data 

поэтому у меня есть селектор, который

.select("b, strong") 

, а затем попытаться извлечь текст между ними. - Все отлично.

Проблема: Иногда сайт имеет, например.

<strong><strong>HeaderX</strong><br /></strong>Data 

теперь это портит мою петлю, так как я буду получать текст headerX в два раз, как я могу игнорировать вложенную сильное?

ОБНОВЛЕНИЕ # 1 Решено, но, вероятно, имеет лучший способ.

Elements selected = info.select("b, strong"); 
Element next = selected.get(0); 
Element now = null; 
for (int i = 0; next != null ;i++) { 
    now = next; 
    next = null; 
    Elements children = now.getAllElements(); 
    for (;selected.size() > i; i++) { 
     next = selected.get(i); 
     if (!children.contains(next)) { 
      break; 
     } 
    } 
    //Do whatever with now & next 
} 

ответ

0

Try This:

EDIT

info.select("b,strong").remove().text(); 
+0

Это будет только заголовок дважды, как раз испытал его на '

a
б 'и получил результат:' '' ' –

+0

я испытал его на расширение Firebug 1.2, и она работала для меня. Хорошо попробуйте этот путь вместо использования цикла. Ответ будет опубликован выше. – ImGeorge

0

Вы можете попробовать это:

doc.select("strong > strong, strong:last-child"); 
Смежные вопросы