我有一个将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&blah=blahblah">link</a>
我已经做到了,可以正常工作:
content = File.read("file.xhtml")
content.gsub!("&","&")
File.open("updated_file.xhtml", 'w') { |file| file.write(content) }
#=> <a href="http://www.url.com/?blah&blah=blahblah">link</a>
但是我想避免重新打开/保存文件,因为我一次要处理很多事情,并且希望尽可能地提高效率。
这对Nokogiri可行吗?我是否应该寻找其他地方来实现这一目标?