Jsoup выбрать и повторить все элементы - PullRequest
25 голосов
/ 12 августа 2011

Я подключусь к URL через jsoup и получу все его содержимое, но дело в том, что если я выберу, как,

doc.select("body")

он возвращает один элемент, но я хочу получить все элементы на странице и итерировать их по одному, например,

<html>
<head><title>Test</title></head>
<body>
<p>Hello All</p>
<a href="test.html">Second Page</a>
<div>Test</div>
</body>
</html>

Если я выбираю с помощью тела, я получаю результат в одной строке, например,

Test Hello All Second Page Test

Вместо этого я хочу выбрать все элементы и выполнить итерацию один за другим и получить результаты, например,

Test
Hello All
Second Page
Test

Будет ли это возможно с помощью jsoup?

Спасибо
Картик

Ответы [ 3 ]

52 голосов
/ 12 августа 2011

Вы можете выбрать все элементы документа, используя селектор *, а затем получить текст каждого из них по отдельности, используя Element#ownText().

Elements elements = document.body().select("*");

for (Element element : elements) {
    System.out.println(element.ownText());
}
1 голос
/ 20 октября 2014

Чтобы получить все элементы в теле документа, используя библиотеку jsoup.

doc.body().children().select("*");

Чтобы получить только первый уровень элементов в элементах тела документа.

doc.body().children();

0 голосов
/ 12 августа 2011

Вы можете использовать XPath или любую библиотеку, которая содержит XPath

выражение //text()

Проверьте выражение с помощью xml здесь

...