que tienen un elemento como este:¿Cómo extraer nodos de texto separados con Jsoup?
<td> TextA <br/> TextB </td>
¿Cómo puedo extraer TEXTA y TextB por separado?
que tienen un elemento como este:¿Cómo extraer nodos de texto separados con Jsoup?
<td> TextA <br/> TextB </td>
¿Cómo puedo extraer TEXTA y TextB por separado?
Varias maneras. Eso realmente depende del documento en sí y de si el marcado HTML dado es consistente o no. En este ejemplo particular, puede obtener los nodos secundarios td
en Element#childNodes()
y luego probar cada nodo individualmente si es TextNode
o no.
E.g.
Element td = getItSomehow();
for (Node child : td.childNodes()) {
if (child instanceof TextNode) {
System.out.println(((TextNode) child).text());
}
}
que se traduce en
TextA TextB
creo que sería bueno si Jsoup ofreció un Element#textNodes()
o algo para obtener los nodos de texto niño como lo Element#children()
hace para obtener los elementos secundarios (que han regresado el elemento <br />
en su ejemplo).
Implementé Element # textNodes() para 1.6.2, gracias por la sugerencia. https://github.com/jhy/jsoup/commit/7b9f17760049161b775fd23b15653961620e259d –
@JonathanHedley ¡Eres un salvavidas! No puedo agradecerle lo suficiente por su arduo trabajo. Tu código y tus comentarios son perfectos y me han ahorrado horas de Google y StackOverflow. – stackular