HtmlAgilityPack和HtmlDecode
我目前使用HtmlAgilityPack与控制台应用程序来刮一个网站。 由于html被编码(它会返回编码字符,如“ '
),所以在将内容保存到我的数据库之前,我必须进行解码。
有没有办法解码返回的HTML使用HtmlAgilityPack而不必使用HttpUtility.HtmlDecode? 如果可能,我想避免将System.Web添加到我的控制台应用程序中。
Html Agility Pack配有名为HtmlEntity
的实用程序类。 它具有以下签名的静态方法:
/// <summary> /// Replace known entities by characters. /// </summary> /// <param name="text">The source text.</param> /// <returns>The result text.</returns> public static string DeEntitize(string text)
它支持众所周知的实体(如
)和编码字符,如
'
以及。
只需加上我的2美分:我已经使用StopWatch
类跑了一些性能testing,发现HttpUtility.HtmlDecode
比DeEntitize
方法快大约15-20%。 DeEntitize
也有一些错误(见上面的注释)。
所以也许引用System.Web毕竟不是那么糟糕。
如果你正在编写一个已经针对“.NET完全”(而不是“.NET客户端configuration文件” – 这是一个轻量级版本)的应用程序 – 我会去引用System.Web。