如何防止Nokogiri对HTML片段中的实体进行编码

ace*_*des 4 html ruby html-entities nokogiri

诺基亚1.5.0

我无法通过具有查询参数的链接(尤其是href中的&符)输出已解析的片段。“&”号替换为其html实体。

f = Nokogiri::HTML.fragment(%q{<a href="http://example.com?this=1&that=2">Testing</a>})
f.to_s    # => "<a href=\"http://example.com?this=1&amp;that=2\">Testing</a>"
f.to_html # => "<a href=\"http://example.com?this=1&amp;that=2\">Testing</a>"
Run Code Online (Sandbox Code Playgroud)

没有帮助使用to_html(encoding: 'UTF-8')或US-ASCII。

这看起来很普遍,解析有效的链接格式,并希望将其呈现为有效的HTML。

如何使Nokogiri透明地返回未修改的未编码HTML实体?没有帮助。

Joh*_*hat 5

Nokogiri的HTML解析器会自动更正源文档中的错误。URL中的裸“&”号实际上是一个错误,因此Nokogiri正在对其进行更正。如果您查看f.errors,您会发现它不是&that一个有效的实体,并且缺少分号,因此它将&符固定为&amp;,从而使其成为有效的HTML。