【问题】
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,而直接得到过滤了标签后的文本内容。
转载请注明:在路上 » 【已解决】C#中(过滤)去除HTML标签(tag)