Я спарсил новостную страничку, используя библиотеку 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;
А мне текстовые значения нужно как-то разграничить, но я не понимаю как...
Только рекурсивным перебором нодов
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);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости