HtmlAgilityPack和HtmlDecode

html-agility-pack

我目前正在使用带有控制台应用程序的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; )和编码字符,如&#039;同样。


热门答案

只需添加我的2美分:我使用StopWatch类运行了一些性能测试,发现HttpUtility.HtmlDecodeDeEntitize方法 15-20%。 DeEntitize也有一些错误(见上面的评论)。

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

如果你正在编写一个已经以“.NET full”为目标的应用程序(与“.NET Client Profile”相反 - 这是一个轻量级版本) - 我会去引用System.Web。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因