web-dev-qa-db-fra.com

Jsoup sélectionne et itère tous les éléments

Je vais me connecter à une URL via jsoup et en obtenir tout le contenu, mais si je sélectionne comme,

doc.select("body")

il renvoie un seul élément mais je veux obtenir tous les éléments de la page et les répéter un par un, par exemple,

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

Si je sélectionne en utilisant le corps, j'obtiens le résultat sur une seule ligne comme,

Test Hello All Second Page Test

Au lieu de cela, je veux sélectionner tous les éléments et répéter un par un et produire les résultats comme,

Test
Hello All
Second Page
Test

Sera-ce possible avec jsoup?

Merci,
Karthik

26
Karthik

Vous pouvez sélectionner tous les éléments du document à l'aide du sélecteur *, Puis obtenir le texte de chacun individuellement à l'aide de Element#ownText().

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

for (Element element : elements) {
    System.out.println(element.ownText());
}
53
BalusC

Pour obtenir tous les éléments dans le corps du document à l'aide de la bibliothèque jsoup.

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

Pour obtenir uniquement le premier niveau d'éléments dans les éléments du corps du document.

doc.body().children();

1
Blind TeamKiller

Vous pouvez utiliser XPath ou toute bibliothèque contenant XPath

l'expression est //text()

Testez l'expression avec votre xml ici

0
zawhtut