我目前正在使用带有控制台应用程序的HtmlAgilityPack来抓取一个网站 . 由于html是编码的(它返回编码字符,如 ' ),我必须在将内容保存到我的数据库之前进行解码 .
'
有没有办法使用HtmlAgilityPack解码返回的html而不必使用HttpUtility.HtmlDecode?我希望尽可能避免将System.Web添加到我的控制台应用程序中 .
Html Agility Pack配备了一个名为 HtmlEntity 的实用程序类 . 它有一个带有以下签名的静态方法:
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 类运行了一些性能测试,发现 HttpUtility.HtmlDecode 比 DeEntitize 方法大约15-20% faster . 另外 DeEntitize 也有一些错误(见上面的评论) .
StopWatch
HttpUtility.HtmlDecode
DeEntitize
所以也许引用System.Web毕竟不是那么糟糕 .
如果您正在编写一个已经以“.NET full”为目标的应用程序(与“.NET Client Profile”相对应 - 这是一个轻量级版本) - 我会去引用System.Web .
使用不需要任何特殊参考的WebUtility .
3 回答
Html Agility Pack配备了一个名为
HtmlEntity
的实用程序类 . 它有一个带有以下签名的静态方法:它支持众所周知的实体(如
)和编码字符,如'
.只需加上我的2美分:我使用
StopWatch
类运行了一些性能测试,发现HttpUtility.HtmlDecode
比DeEntitize
方法大约15-20% faster . 另外DeEntitize
也有一些错误(见上面的评论) .所以也许引用System.Web毕竟不是那么糟糕 .
如果您正在编写一个已经以“.NET full”为目标的应用程序(与“.NET Client Profile”相对应 - 这是一个轻量级版本) - 我会去引用System.Web .
使用不需要任何特殊参考的WebUtility .