Парсинг с JSOUP. Как достать значения из Element?

272
23 сентября 2017, 21:15

Я спарсил новостную страничку, используя библиотеку JSOUP и получил новость:

Element myNew...
Log.d("logs", "myNew-"+myNew.toString());   

Логи показывают, что мой Element с новостью имеет следующий вид:

<div id="news-id-ХХХ" style="display:inline;">       
TEXT1   
<br>TEXT2   
<br>      
<div align="center">     
<img src="URL_IMAGE">
</div>    
<br>    
<br>TEXT3
</div>  

Можно ли как-нибудь достать из этого Element значения TEXT_X так, чтобы сохранилась правильная последовательность элементов по порядку и получилось следующее:

List<String> list = new ArrayList<>;
list.get(1) = "TEXT1";    
list.get(2) = "TEXT2";    
list.get(3) = "URL_IMAGE";    
list.get(4) = "TEXT3";       

Как достать URL_IMAGE я разобрался, а вот с текстом беда выходит. Пытался достать текст методом myNew.text(), так программа берет весь TEXT из новости и получается следующее:

String s = TEXT1+TEXT2+TEXT3;    

А мне текстовые значения нужно как-то разграничить, но я не понимаю как...

Answer 1

Только рекурсивным перебором нодов

static void extractContent(Node node, List<String> result) {
    if (node instanceof TextNode) {
        String text = ((TextNode) node).text().trim();
        if (!text.isEmpty()) result.add(text); // Добавляем только непустые тексты
    } else if ("img".equals(node.nodeName())) {
        result.add(node.attr("src"));
    } else {
        for (Node child : node.childNodes()) {
            extractContent(child, result);
        }
    }
}

Пример использования:

// Находишь нужный DIV в документе
Element div = doc.select("div#news-id-ХХХ").first();
List<String> result = new ArrayList<String>();
extractContent(div, result);
System.out.println(result);
READ ALSO
Пропали базы данных

Пропали базы данных

Перенес сервер Apache из одного компьютера на другойТам был написан свой сервер и в нем был phpMyAdmin, на другом компьютере заново установил MySql

150
Разная высота колонок в bootstrap

Разная высота колонок в bootstrap

Верстаю простенький шаблон из макета без модульной сеткиРешил, что проще будет подогнать это дело под bootstrap

241
Как сделать такую кнопку?

Как сделать такую кнопку?

Как сделать чтобы это меню исчезало если страница прокручивалась до середины? pos:fix и тд

217
Нужно вывести данные из json в php через ссылку

Нужно вывести данные из json в php через ссылку

Есть ссылка на API с данными в формате JSONИх значения нужно вывести в HTML

243