【发布时间】:2016-01-28 16:06:33
【问题描述】:
我使用下面的代码使用 AngleSharp 从解析的 html 中去除特定的 html 标签(因为建议使用正则表达式来执行此类工作(AngleSharp 当前维护,HtmlAgilityPack 不是,因此我一直转向后者)。
效果很好 - 但现在我也想删除 html cmets。表示在 <!-- 和 --> 标签之间找到的任何内容。
如何使用 AngleSharp 实现这一点?在这里使用 QuerySelector 似乎不合适。
private string ExtractContentFromHtml(string input)
{
List<string> tagsToRemove = new List<string>
{
"script",
"style",
"img"
};
var config = Configuration.Default.WithJavaScript();
HtmlParser hp = new HtmlParser(config);
List<IElement> tags = new List<IElement>();
List<string> nodeTypes = new List<string>();
var hpResult = hp.Parse(input);
try
{
foreach (var tagToRemove in tagsToRemove)
tags.AddRange(hpResult.QuerySelectorAll(tagToRemove));
foreach (var tag in tags)
tag.Remove();
}
catch (Exception ex)
{
_errors.Add(string.Format("Error in cleaning html. {0}", ex.Message));
}
var content = hpResult.QuerySelector("body");
return (content).InnerHtml;
}
【问题讨论】:
标签: c# anglesharp