【发布时间】:2012-08-30 22:57:03
【问题描述】:
是否可以使用 htmlagilitypack 库删除 html 中的注释文本?目前我正在做一些从 ASP 到 ASP.NET MVC 的迁移工作,并在那里使用 Regex 来处理这些事情,我只想知道在开始之前我可以使用 htmlagilitypack 来实现吗试试看。
【问题讨论】:
是否可以使用 htmlagilitypack 库删除 html 中的注释文本?目前我正在做一些从 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;
【讨论】: