HtmlAgilityPack et HtmlDecode

html-agility-pack

Question

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.

Réponse acceptée

Le pack d'agilité HTML est équipé d'une classe utilitaire 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 connues (telles que &nbsp; ) et des caractères codés tels que &#039; ainsi que.


Réponse populaire

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.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi