Vorrei rimuovere quei tag con il loro contenuto dall'origine HTML.Come cercare i commenti ("<!-- -->") utilizzando Jsoup?
risposta
Durante la ricerca si utilizza in genere Elements.select(selector)
dove selector
è definito da this API. Tuttavia i commenti non sono elementi tecnicamente, quindi potresti essere confuso qui, pur essendo nodi identificati dal nome del nodo #comment
.
Vediamo come potrebbe funzionare:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Node;
public class RemoveComments {
public static void main(String... args) {
String h = "<html><head></head><body>" +
"<div><!-- foo --><p>bar<!-- baz --></div><!--qux--></body></html>";
Document doc = Jsoup.parse(h);
removeComments(doc);
doc.html(System.out);
}
private static void removeComments(Node node) {
for (int i = 0; i < node.childNodesSize();) {
Node child = node.childNode(i);
if (child.nodeName().equals("#comment"))
child.remove();
else {
removeComments(child);
i++;
}
}
}
}
che è buono e questo codice di lavoro
doc.select("#comment").remove();
e per codice di rimuovere molti tag
doc.select("script, style, meta, link, comment, CDATA, #comment").remove();
'doc.select (" # commento "). Remove();' non funziona, non rimuove i commenti html. Ha funzionato per te? – yetanothercoder
'doc.select (" # commento "). Remove()' indica "Rimuovi tutti i nodi con campo id uguale a" commento "." – Stephan
hmm questo mi la sta dando digita errore – user1893354
Se riesci a ottenere una versione di Jsoup di 6 anni, funzionava allora. Altrimenti, se l'API viene aggiornata, accolgo correzioni per aggiornare questo esempio. Sembra che l'elenco childNodes sia stato reso non modificabile in alcune versioni. –
dlamblin