Как удалить прокомментированный текст в html с помощью htmlagilitypack

html-agility-pack

Вопрос

Можно ли удалить прокомментированный текст в html с помощью библиотеки htmlagilitypack ? В настоящее время я выполняю некоторую миграционную работу от ASP до ASP.NET MVC, и там используется Regex для этих вещей и просто хочу знать, могу ли я достичь этого с помощью htmlagilitypack, прежде чем начинать его попробовать.

Принятый ответ

Вы можете найти все узлы типа HtmlCommentNode (который представляет комментарий HTML) и удалить его из документа. Но учтите, что AgilityPack рассматривает, например, <!DOCTYPE html> как узел комментариев. Поэтому такие узлы должны быть пропущены для удаления:

var doc = new HtmlDocument();
doc.LoadHtml(html);
var comments = doc.DocumentNode.DescendantNodes()
    .OfType<HtmlCommentNode>()
    .Where(c=> 
        !c.Comment.StartsWith("<!DOCTYPE", StringComparison.OrdinalIgnoreCase)
    ).ToList();

foreach (var comment in comments)
    comment.Remove();

var result = doc.DocumentNode.InnerHtml;


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow