Comment puis-je écrire du code HTML décodé à l'aide de HTMLAgilityPack?

c# decode html html-agility-pack innertext

Question

Je réussis partiellement à écrire du HTML dans un fichier DOCX à l'aide de HTMLAgilityPack et de la bibliothèque DOCX. Toutefois, le texte que j'insère dans le fichier .docx contient du code HTML codé, tel que:

La ciudad de Los Ángeles (California) ha sincronizado su red completa de semáforos —casi 4.500—, que cubre una zona de 1.215 kilómetros cuadrados (469 millas cuadradas). Según el diario

Ce que je veux, c'est plus comme ça:

La ciudad de Los Angeles (California) ha sincronizado su red completa de semaforos - casi 4.500 -, que cubre una zona de 1.215 kilometros cuadrados (469 millas
cuadradas). Segun el diario

Pour montrer un peu de contexte, voici le code que j'utilise:

private void ParseHTMLAndConvertBackToDOCX()
{
    List<string> sourceText = new List<string>();
    List<string> targetText = new List<string>();
    HtmlAgilityPack.HtmlDocument htmlDocSource = new HtmlAgilityPack.HtmlDocument();
    HtmlAgilityPack.HtmlDocument htmlDocTarget = new HtmlAgilityPack.HtmlDocument();

    // There are various options, set as needed
    htmlDocSource.OptionFixNestedTags = true;
    htmlDocTarget.OptionFixNestedTags = true;

    htmlDocSource.Load(sourceHTMLFilename);
    htmlDocTarget.Load(targetHTMLFilename);

    // Popul8 generic list of string with source text lines
    if (htmlDocSource.DocumentNode != null)
    {
        IEnumerable<HtmlAgilityPack.HtmlNode> pNodes = htmlDocSource.DocumentNode.SelectNodes("//text()");

        foreach (HtmlNode sText in pNodes)
        {
            if (!string.IsNullOrWhiteSpace(sText.InnerText))
            {
                sourceText.Add(sText.InnerText);
            }
        }
    }

. . .

La ligne la plus pertinente est sans aucun doute:

sourceText.Add(sText.InnerText);

Devrait-il être autre chose qu'InnerText?

Est-il possible de faire quelque chose comme:

sourceText.Add(sText.InnerText.Decode());

?

Intellisense ne fonctionne pas avec cela, même si le projet est compilé et exécuté; essayer de voir quelles autres options il y a à part InnerText for HTMLNode est donc infructueux; Je sais qu'il existe OuterText, InnerHTML et OuterHMTL, bien que ...

Réponse acceptée

Essayez avec:

sourceText.Add(HttpUtility.HtmlDecode(myEncodedString));

Exemples


Réponse populaire

Vous pouvez utiliser HtmlEntity.DeEntitize(sText.InnerText) partir de HTMLAgilityPack.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow