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
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());
}
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();
Vous pouvez utiliser XPath ou toute bibliothèque contenant XPath
l'expression est //text()
Testez l'expression avec votre xml ici