使用HtmlAgilityPack保留空格

5
我正在尝试使用Html Agility Pack来突出显示html字符串中的文本。我能够用<span class="highlight">替换文本,但是当我替换文本时,跨越标签周围的空格就不见了。例如,如果文本是"This text will be highlighted",则结果为"This text will be<span class='highlighted'>highlighted</span>",在标签前的空格消失了。这会将之前和之后的单词与文本合并。我只需像这样做一个递归循环:

  1. 获取第一个子节点
  2. 如果节点是#text,则node.InnerHtml = InnerText.Replace(search_term, span_code)
  3. 如果节点有子节点,则转到步骤1
  4. 转到下一个同级节点,然后转到步骤1

然后我将HtmlDocumentInnerHtml作为结果。我尝试在之前和之后放置空格,但它们被删除了。我尝试过HtmlDocument.OptionWriteEmptyNodes = true;也无济于事。我替换了创建HtmlDocument之前和获取html字符串之后的所有"\n""\t"字符,并且它们也没有影响。

如何在使用Html Agility Pack时保留空格?


我已经尝试过使用XmlDocument的SGMLReader。它保留了空格,但这次我又遇到了另一个问题。当我用<span>代码更改XmlNode的InnerText时,它将"<"和">"编码为"<"和">"。 - oruchreis
1个回答

4

实际上,HtmlDocument.OptionWriteEmptyNodes = true; 做了我想要的事情。我现在意识到了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接