使用Nokogiri插入未转义的URL

时间:2019-02-06 20:23:20

标签: ruby nokogiri entities

我有一个将URL插入现有XHTML页面的脚本。这些网址的跟踪代码带有&符,并且Nokogiri会自动用转义版本&替换它们。我理解原因,但是转义的网址表示跟踪功能已更改,因此跟踪无法正常工作。

我已经检出了How to save unescaped & in nokogiri xml?How can i put a string with an ampersand in an xml file with Nokogiri?Preventing Nokogiri from escaping characters?,但是我不确定在我所使用的环境中如何使用构建器或使用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可行吗?我是否应该寻找其他地方来实现这一目标?

0 个答案:

没有答案