如何使用htmlagilitypack删除html中的注释文本

时间:2012-08-29 15:54:50

标签: html-agility-pack

是否可以使用 htmlagilitypack 库删除html中的注释文本?目前我正在从ASP到ASP.NET MVC进行一些迁移工作,在那里它使用 Regex 来做这些事情,只是想知道我可以在开始之前使用 htmlagilitypack 实现这一点尝试一下。

1 个答案:

答案 0 :(得分:3)

您可以找到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;