¿Cómo puedo escribir HTML decodificado usando HTMLAgilityPack?

c# decode html html-agility-pack innertext

Pregunta

Estoy teniendo un éxito parcial en mi intento de escribir HTML en un archivo DOCX utilizando HTMLAgilityPack y la biblioteca DOCX. Sin embargo, el texto que estoy insertando en el archivo .docx contiene html codificado como:

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

Lo que quiero que sea es más así:

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

Para mostrar algo de contexto, este es el código que estoy usando:

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 línea más pertinente es sin duda alguna:

sourceText.Add(sText.InnerText);

¿Debería ser algo más que texto interior?

¿Es posible hacer algo como:

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

?

Intellisense no está trabajando con esto, a pesar de que el proyecto se compila y ejecuta; tratar de ver qué otras opciones hay además de InnerText para HTMLNode es, pues, infructuoso; Sé que hay OuterText, InnerHTML y OuterHMTL, aunque ...

Respuesta aceptada

Intenta con:

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

Ejemplos


Respuesta popular

Puede usar HtmlEntity.DeEntitize(sText.InnerText) desde HTMLAgilityPack.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué