2011-03-26 63 views
8

¿Cómo se puede eliminar los Comentarios de los archivos HTML?Eliminar comentarios HTML

Sólo podrán tomar hasta una sola línea, sin embargo estoy seguro de que voy a correr en los casos en que un comentario puede extenderse a lo largo de varias líneas:

<!-- Single line comment. --> 

<!-- Multi- 
ple line comment. 
Lots  '""' ' " ` ~ |}{556    of  [email protected]#$%^&*())  lines 
in 
this 
comme- 
nt! --> 
+0

Si el objetivo es comprimir los archivos, Google 'Minify HTML' para una variedad de soluciones que puede agregar a su flujo de trabajo. –

Respuesta

3
No

la mejor solución por ahí, pero un simple proceso de pasar algo debe hacer el truco

List<string> output = new List<string>(); 

bool flag = true; 
foreach (string line in System.IO.File.ReadAllLines("MyFile.html")) { 

    int index = line.IndexOf("<!--"); 

    if (index > 0)) { 
     output.Add(line.Substring(0, index)); 
     flag = false; 
    } 

    if (flag) { 
     output.Add(line); 
    } 

    if (line.Contains("-->")) { 
     output.Add(line.Substring(line.IndexOf("-->") + 3)); 
     flag = true; 
    } 
} 

System.IO.File.WriteAllLines("MyOutput.html", output); 
+1

-1, si el comentario comienza en el medio de la línea, se está saltando toda la línea ... –

+0

Ahh, así es ... Podría cambiarlo, probablemente debería ... ehh bien bien – zellio

+0

Gracias Akash Kava - tanto como es molesto de hacer, fue correcto arreglarlo. – zellio

4

Esta función con ajustes menores debería funcionar: -

private string RemoveHTMLComments(string input) 
    { 
     string output = string.Empty; 
     string[] temp = System.Text.RegularExpressions.Regex.Split(input, "<!--"); 
     foreach (string s in temp) 
     { 
      string str = string.Empty; 
      if (!s.Contains("-->")) 
      { 
       str = s; 
      } 
      else 
      { 
       str = s.Substring(s.IndexOf("-->") + 3); 
      } 
      if (str.Trim() != string.Empty) 
      { 
       output = output + str.Trim(); 
      } 
     } 
     return output; 
    } 

No estoy seguro si es la mejor solución ...

+0

¡Este código borrará todos los códigos html! –

14

Se puede usar la biblioteca Html Agility Pack .NET. Aquí está un artículo que explica cómo usarlo en SO: How to use HTML Agility pack

Este es el código C# a eliminar los comentarios:

HtmlDocument doc = new HtmlDocument(); 
    doc.Load("yourFile.htm"); 

    // get all comment nodes using XPATH 
    foreach (HtmlNode comment in doc.DocumentNode.SelectNodes("//comment()")) 
    { 
     comment.ParentNode.RemoveChild(comment); 
    } 
    doc.Save(Console.Out); // displays doc w/o comments on console 
+1

Simplemente señalando aquí (como se requiere en http://meta.stackexchange.com/questions/156184) que la biblioteca que Simon recomienda es de la que él es el autor. –

Cuestiones relacionadas