Mam element takiego:Jak wyodrębnić oddzielne węzły tekstowe za pomocą Jsoup?
<td> TextA <br/> TextB </td>
Jak można wyodrębnić TextA i TextB osobno?
Mam element takiego:Jak wyodrębnić oddzielne węzły tekstowe za pomocą Jsoup?
<td> TextA <br/> TextB </td>
Jak można wyodrębnić TextA i TextB osobno?
Kilka sposobów. To naprawdę zależy od samego dokumentu i tego, czy dany znacznik HTML jest spójny, czy nie. W tym konkretnym przykładzie można uzyskać węzły podrzędne td
przez Element#childNodes()
, a następnie przetestować każdy węzeł osobno, jeśli jest to TextNode
lub nie.
E.g.
Element td = getItSomehow();
for (Node child : td.childNodes()) {
if (child instanceof TextNode) {
System.out.println(((TextNode) child).text());
}
}
co skutkuje
TextA TextB
myślę, że byłoby miło, gdyby Jsoup oferowane Element#textNodes()
lub coś dostać węzły tekstowe jak dziecko jak Element#children()
robi, aby uzyskać elementy podrzędne (co powrócili element <br />
w twoim przykładzie).
Zaimplementowałem Element # textNodes() dla wersji 1.6.2, dziękuję za sugestię. https://github.com/jhy/jsoup/commit/7b9f17760049161b775fd23b15653961620e259d –
@ JonathanHedley Oszczędzasz życie! Nie mogę ci wystarczająco podziękować za twoją ciężką pracę. Twój kod i komentarze są idealne i pozwoliły mi zaoszczędzić godzin Google i StackOverflow. – stackular