2011-08-12 63 views
18

que se conectará a una URL a través jsoup y conseguir todo el contenido de la misma, pero la cosa es que si selecciono como,Jsoup seleccione e iterar todos los elementos

doc.select("body") 

su devolución de un solo elemento, pero quiero llegar todos los elementos de la página y iterar uno por uno, por ejemplo,

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

si selecciono usando el cuerpo que estoy consiguiendo el resultado en una sola línea como,

Test Hello All Second Page Test 

lugar Quiero seleccionar todos los elementos y recorrer uno por uno y producir los resultados como,

Test 
Hello All 
Second Page 
Test 

¿Eso será posible utilizando jsoup?

Gracias,
Karthik

Respuesta

47

Puede seleccionar todo elementos del documento que usa el selector * y luego obtiene el texto de cada uno individualmente usando Element#ownText().

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

for (Element element : elements) { 
    System.out.println(element.ownText()); 
} 
+1

No, esto también está produciendo la misma salida, alguna idea? – Karthik

+1

Entonces no hay hijos directos del cuerpo como lo demostró en su pregunta. Actualizaré la respuesta. – BalusC

+0

Gracias amigo funciona como un encanto. – Karthik

0

Puede utilizar XPath o cualquier biblioteca que contiene XPath

la expresión es //text()

Prueba de la expresión con su xml here

1

Para obtener todos los elementos dentro del cuerpo del documento mediante la biblioteca jsoup.

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

para obtener sólo el primer nivel de elementos en los elementos de documentos de los órganos.

doc.body().children();

+0

Esa es una distinción importante que no es inmediatamente obvia de las otras respuestas. Gracias. Para obtener los elementos de primer nivel del cuerpo del documento y * sus * hijos (segundo ejemplo), a diferencia de una lista plana de todos los elementos dentro de la etiqueta del cuerpo (primer ejemplo). – Murrah

Cuestiones relacionadas