J'utilise actuellement HtmlAgilityPack avec une application console pour gratter un site Web. Comme le code HTML est codé (il renvoie des caractères codés tels que '
), je dois décoder avant de sauvegarder le contenu dans ma base de données.
Est-il possible de décoder le code HTML renvoyé à l'aide de HtmlAgilityPack sans avoir à utiliser HttpUtility.HtmlDecode? Je souhaite éviter d'ajouter System.Web à mon application console si possible.
Le pack d'agilité Html est équipé d'une classe d'utilitaires appelée HtmlEntity
. Il a une méthode statique avec la signature suivante:
/// <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)
Il prend en charge des entités bien connues (comme
) et des caractères codés tels que '
ainsi que.
HttpUtility.HtmlDecode
simplement mes 2 centimes: j'ai effectué des tests de performance à l'aide de la classe StopWatch
et constaté que HttpUtility.HtmlDecode
est environ 15 à 20% plus rapide que la méthode DeEntitize
. DeEntitize
a aussi quelques bugs (voir les commentaires ci-dessus).
Alors peut-être que référencer System.Web n’est pas si mal après tout.
Si vous écrivez une application qui cible déjà ".NET full" (par opposition à ".NET Client Profile" - qui est une version allégée) - je préférerais référencer System.Web.