Ho un elemento come questo:Come estrarre nodi di testo separati con Jsoup?
<td> TextA <br/> TextB </td>
Come posso estrarre Texta e TextB separatamente?
Ho un elemento come questo:Come estrarre nodi di testo separati con Jsoup?
<td> TextA <br/> TextB </td>
Come posso estrarre Texta e TextB separatamente?
Diversi modi. Questo dipende molto dal documento stesso e dal fatto che il dato markup HTML sia coerente o meno. In questo particolare esempio è possibile ottenere i nodi secondari dello td
tramite Element#childNodes()
e quindi verificare singolarmente ogni nodo se si tratta di un TextNode
oppure no.
E.g.
Element td = getItSomehow();
for (Node child : td.childNodes()) {
if (child instanceof TextNode) {
System.out.println(((TextNode) child).text());
}
}
che si traduce in
TextA TextB
penso che sarebbe bello se Jsoup offerto un Element#textNodes()
o qualcosa per ottenere i nodi di testo bambino come come Element#children()
fa per ottenere gli elementi figlio (che sarebbe tornato l'elemento <br />
nell'esempio).
Ho implementato l'elemento # textNodes() per 1.6.2, grazie per il suggerimento. https://github.com/jhy/jsoup/commit/7b9f17760049161b775fd23b15653961620e259d –
@JonathanHedley Sei un risparmiatore di vita! Non posso ringraziarti abbastanza per il tuo duro lavoro. Il tuo codice e i tuoi commenti sono perfetti e mi hanno risparmiato ore di Google e StackOverflow. – stackular