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

У меня есть частичный успех в моей попытке записать 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, хотя ...


person B. Clay Shannon    schedule 18.02.2014    source источник


Ответы (2)


Попробуйте:

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

Примеры

person Felipe Pereira    schedule 18.02.2014
comment
Спасибо; просто нужно было добавить ссылки на System.Web - person B. Clay Shannon; 18.02.2014

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

person MattheW    schedule 20.11.2014
comment
Я предпочитаю этот ответ, потому что не нужен другой код, кроме HtmlAgilityPack. - person Jens Marchewka; 16.08.2015