首页 > 解决方案 > 使用 Nokogiri 插入未转义的 URL

问题描述

我有一个将 URL 插入现有 XHTML 页面的脚本。URL 具有带 & 符号的跟踪代码,Nokogiri 会自动将它们替换为转义版本&。我明白为什么,但是转义的 URL 意味着跟踪不起作用,因为跟踪代码已更改。

我已经检查了如何在 nokogiri xml 中保存未转义的 &?,我怎样才能在 Nokogiri 的 xml 文件中放入一个带 & 符号的字符串?, 和防止 Nokogiri 转义字符?,但我不太确定如何在我正在尝试做的事情的上下文中使用构建器或使用 cdata。

这是我目前正在做的事情的简化版本(main_link从外部来源中提取):

doc = Nokogiri::XML(open("file.xhtml"))
link = doc.css("a")[0] # the actual file may contain multiple links, not just one
main_link = "http://www.url.com/"
tag = "?blah&blah=blahblah"
link["href"] = main_link + tag
new_content = doc.to_xml
File.open("new_file.xhtml", "w") { |f| f.write(new_content) }

#=> <a href="http://www.url.com/?blah&amp;blah=blahblah">link</a>

我已经这样做了,它有效:

content = File.read("file.xhtml")
content.gsub!("&amp;","&")
File.open("updated_file.xhtml", 'w') { |file| file.write(content) }

#=> <a href="http://www.url.com/?blah&blah=blahblah">link</a>

但我想避免重新打开/重新保存文件,因为我一次要处理很多事情并且希望尽可能高效。

这对 Nokogiri 可行吗?我应该寻找其他地方来实现这一目标吗?

标签: rubynokogirientities

解决方案


推荐阅读