2011-09-24 18 views

risposta

30

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++; 
      } 
     } 
    }   
} 
+0

hmm questo mi la sta dando digita errore – user1893354

+1

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

-1

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(); 
+1

'doc.select (" # commento "). Remove();' non funziona, non rimuove i commenti html. Ha funzionato per te? – yetanothercoder

+3

'doc.select (" # commento "). Remove()' indica "Rimuovi tutti i nodi con campo id uguale a" commento "." – Stephan

Problemi correlati