c# - 如何使用 HTMLAgilityPack 写出解码后的 HTML?

标签 c# html html-agility-pack decode innertext

我在尝试使用 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 也无法使用它;因此,试图查看除了 InnerText for HTMLNode 之外还有哪些其他选项是徒劳的;不过,我知道有 OuterText、InnerHTML 和 OuterHMTL...

最佳答案

您可以使用 HTMLAgilityPack 中的 HtmlEntity.DeEntitize(sText.InnerText)

关于c# - 如何使用 HTMLAgilityPack 写出解码后的 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21842886/

相关文章:

html - Bootstrap 4 列相同高度的卡片

javascript - Html Agility Pack 弄乱了我的 javascript

c# - 填充组合框

c# - 使用 SharpSSH 的 C# VT100 仿真库

c# - 如何将参数传递给 IN 运算符?

javascript - 如何让 jquery css 容器弹出让用户知道数据已成功输入?

c# - FindFirstFileEx 的文件系统支持,限于目录

html - 子菜单的下拉菜单位置

c# - 从 HTML 中删除所有空的/不必要的节点

c# - HtmlAgilityPack : xpath and regex