Wie kann ich decodierten HTML mit HTMLAgilityPack schreiben?

c# decode html html-agility-pack innertext

Frage

Ich habe teilweise Erfolg in meinem Versuch, HTML in eine DOCX-Datei mit HTMLAgilityPack und der DOCX-Bibliothek zu schreiben. Der Text, den ich in die DOCX-Datei einfüge, enthält jedoch codierten HTML-Code wie:

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

Was ich möchte, ist eher so:

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

Um einen Kontext anzuzeigen, verwende ich den folgenden Code:

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

. . .

Die relevanteste Linie ist kein Zweifel:

sourceText.Add(sText.InnerText);

Sollte es etwas anderes als InnerText sein?

Ist es möglich zu etwas wie:

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

?

Intellisense arbeitet nicht damit, obwohl das Projekt kompiliert und ausgeführt wird; zu sehen, welche anderen Optionen es neben InnerText für HTMLNode gibt, ist somit fruchtlos; Ich weiß, dass es OuterText, InnerHTML und OuterHMTL gibt, obwohl ...

Akzeptierte Antwort

Versuche es mit:

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

Beispiele


Beliebte Antwort

Sie können HtmlEntity.DeEntitize(sText.InnerText) von HTMLAgilityPack verwenden.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum