2011-09-24 12 views

Respuesta

30

Al buscar, básicamente utiliza Elements.select(selector) donde selector está definido por this API. Sin embargo, los comentarios no son elementos técnicamente, por lo que puede confundirse aquí, aún así son nodos identificados por el nombre de nodo #comment.

Vamos a ver cómo podría funcionar:

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 esto me la está dando escriba error – user1893354

+1

Si puede obtener una versión de Jsoup de 6 años, funcionó entonces. De lo contrario, si la API se actualiza, doy la bienvenida a las correcciones para actualizar este ejemplo. Parece que la lista childNodes se hizo inmodificable en alguna versión. – dlamblin

-1

que es bueno y el código de trabajo

doc.select("#comment").remove(); 

y por código quitar muchas etiquetas

doc.select("script, style, meta, link, comment, CDATA, #comment").remove(); 
+1

'doc.select (" # comment "). Remove();' no funciona, no elimina los comentarios html. ¿Funcionó para ti? – yetanothercoder

+3

'doc.select (" # comment "). Remove()' significa "Eliminar cualquier nodo que tenga el campo id es igual a 'comentario'." – Stephan

Cuestiones relacionadas