【发布时间】:2012-10-10 19:02:38
【问题描述】:
我正在创建 HtmlDocument 并使用 LoadHtml(string)。我的输入 html 字符串有时会在其中包含符号 < 和 >。所以html解析不正确,例如:
我的 html 是<p>Value < 20 A B C</p>
在这种情况下,我的文档 OutputHtml 是<p>Value < 20="" a="" b=""></p>
也许我必须在 HtmlDocument 中设置一些标志,但我没有发现任何有用的东西。
P.S. HtmlNode 具有相同的行为。
【问题讨论】:
-
您是否可以修复 HTML?
&lt;应该是&lt;。我知道 HTML 比 XML 更宽松,但我认为这基本上仍然是无效的 HTML。 (仅仅因为它在浏览器中呈现并不能使它有效......) -
我从第三方来源获取 html 字符串。也许我可以用有效代码替换这个字符串中的
&lt;、>符号,然后调用函数,但是不替换标签怎么办? -
听起来您想先在其上运行 HtmlTidy - 请参阅 tidy.sourceforge.net(或类似的东西。)
-
是的。这是 HAP 中的一个错误。不太可能是一个设置,因为这种行为总是错误的。 HtmlTidy 看起来是你最好的选择。
-
@SimonMourier - HTML5 规范详细说明了如何解析无效的 HTML。事实上,它足以涵盖任何字节序列。在这种情况下,它被tag open state of the tokenizer (anything else case) 覆盖,它表示如果
&lt;后面的字符是空格,则尖括号只是一个小于号,而不是标签的开头。
标签: c# html parsing xpath html-agility-pack