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) 

它支持众所周知的实体(如&nbsp; )和编码字符,如&nbsp; &#039; 以及。

只需加上我的2美分:我已经使用StopWatch类跑了一些性能testing,发现HttpUtility.HtmlDecodeDeEntitize方法大约15-20%。 DeEntitize也有一些错误(见上面的注释)。

所以也许引用System.Web毕竟不是那么糟糕。

如果你正在编写一个已经针对“.NET完全”(而不是“.NET客户端configuration文件” – 这是一个轻量级版本)的应用程序 – 我会去引用System.Web。