Удаление комментариев HTML - PullRequest
8 голосов
/ 26 марта 2011

Как можно было бы удалить комментарии из файлов HTML?

Они могут занимать только одну строку, однако я уверен, что я столкнусь со случаями, когда комментарий может занимать несколько строк:1003 *

<!-- Single line comment. -->

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

Ответы [ 3 ]

14 голосов
/ 26 марта 2011

Вы можете использовать библиотеку Html Agility Pack .NET. Вот статья, которая объясняет, как использовать ее в SO: Как использовать пакет Agility HTML

Это код C # для удаления комментариев:

    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
4 голосов
/ 26 марта 2011

Эта функция с незначительными изменениями должна работать: -

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

Не уверен, что это лучшее решение ...

3 голосов
/ 26 марта 2011

Не лучшее решение, но простой алгоритм прохода.должен сделать трюк

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 ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...