HtmlAgilityPack e HtmlDecode

html-agility-pack

Domanda

Attualmente sto usando HtmlAgilityPack con un'applicazione console per grattare un sito web. Dato che l'html è codificato (restituisce caratteri codificati come ' ) devo decodificare prima di salvare il contenuto nel mio database.

Esiste un modo per decodificare l'html restituito utilizzando HtmlAgilityPack senza dover utilizzare HttpUtility.HtmlDecode? Voglio evitare di aggiungere System.Web alla mia applicazione console, se possibile.

Risposta accettata

Html Agility Pack è dotato di una classe di utilità chiamata HtmlEntity . Ha un metodo statico con la seguente firma:

    /// <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)

Supporta entità ben note (come &nbsp; ) e caratteri codificati come &#039; anche.


Risposta popolare

Aggiungendo solo i miei 2 centesimi: ho eseguito alcuni test delle prestazioni utilizzando la classe StopWatch e HttpUtility.HtmlDecode scoperto che HttpUtility.HtmlDecode è circa il 15-20% più veloce del metodo DeEntitize . Anche DeEntitize ha alcuni bug (vedi i commenti sopra).

Quindi forse fare riferimento a System.Web non è poi così male.

Se stai scrivendo un'app che ha già come target ".NET full" (opposto a ".NET Client Profile" - che è una versione leggera) - andrei a fare riferimento a System.Web.




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché