11

HTMLAgilityPack と DOCX ライブラリを使用して、HTML を 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 はこれで動作しません。したがって、HTMLNode の InnerText 以外にどのようなオプションがあるかを確認しようとしても無駄です。ただし、OuterText、InnerHTML、および OuterHMTL があることは知っています...

4

2 に答える 2

21

HtmlEntity.DeEntitize(sText.InnerText)HTMLAgilityPack から使用できます。

于 2014-11-20T09:44:31.177 に答える
6

試してみてください:

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

于 2014-02-18T02:11:10.593 に答える