Как я могу написать декодированный HTML, используя HTMLAgilityPack?

c# decode html html-agility-pack innertext

Вопрос

У меня есть частичный успех в моей попытке написать HTML в файл DOCX с помощью HTMLAgilityPack и библиотеки DOCX. Однако текст, который я вставляю в файл .docx, содержит кодированный html, такой как:

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

Я хочу, чтобы это было так:

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

Чтобы показать некоторый контекст, это код, который я использую:

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);
            }
        }
    }

, , ,

Самой подходящей линией, несомненно, является:

sourceText.Add(sText.InnerText);

Должно ли это быть чем-то другим, кроме InnerText?

Можно ли что-то вроде:

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

?

Intellisense не работает с этим, хотя проект компилируется и запускается; пытаясь увидеть, какие другие варианты есть, кроме того, InnerText для HTMLNode, таким образом, бесплоден; Я знаю, что есть OuterText, InnerHTML и OuterHMTL, хотя ...

Принятый ответ

Попробуйте:

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

Примеры


Популярные ответы

Вы можете использовать HtmlEntity.DeEntitize(sText.InnerText) из HTMLAgilityPack.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow