我尝试使用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,但是......
答案 0 :(得分:18)
您可以使用HTMLAgilityPack中的HtmlEntity.DeEntitize(sText.InnerText)
。
答案 1 :(得分:6)