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合法嗎? 是的,了解原因