【已解决】C#中(过滤)去除HTML标签(tag)

【问题】

C#中,处理html:

Type-2 Diabetes an Autoimmune Disease? – Hemoblogin – School <b>…</b>

时,想要去除其中的标签,此处为<b>。

但是很明显,此处的确是可以自己手动用正则处理,但是明显很不安全和不全面。

所以希望找到一个办法,很安全的处理掉所有的html的标签。

【解决过程】

1.参考:

Using C# regular expressions to remove HTML tags

去试试:

            string InnerHtml = "Losing <em>weight</em> and belly fat improves sleep - Harvard Health <b>...</b>";
            string filderteHtml =HttpUtility.HtmlDecode(InnerHtml);

结果,如开始所预料的,还是没变化。

2.而此处,本身就是正在使用HtmlAgilityPack,所以,可以直接通过:

HtmlNodeCollection h3aHtmlNodes = rootHtmlNode.SelectNodes("//h3[@class='r']/a");
foreach (HtmlNode h3aNode in h3aHtmlNodes)
{
    //InnerHtml
    //"Losing <em>weight</em> and belly fat improves sleep - Harvard Health <b>...</b>"
    //InnerText:
    //"Losing weight and belly fat improves sleep - Harvard Health ..."
    string title = h3aNode.InnerText;
}

而得到对应,过滤标签之后的html的text内容的:

Losing weight and belly fat improves sleep – Harvard Health …"

所以,无需再操心html的标签。

3.当然,很简单的html的标签的过滤,则可以用那个正则:

String result = Regex.Replace(htmlDocument, @"<[^>]*>", String.Empty);

的,至少满足一般的需求了。

 

【总结】

最好的办法还是,利用html解析库,比如HtmlAgilityPack,得到html的node后,通过InnerText,而直接得到过滤了标签后的文本内容。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量