代码之家  ›  专栏  ›  技术社区  ›  lumos

使用Nokogiri插入未转义的url

  •  0
  • lumos  · 技术社区  · 6 年前

    我有一个脚本,可以在现有的XHTML页面中插入url。这些url的跟踪代码带有和号,Nokogiri会自动将其替换为转义版本 & . 我明白为什么,但是转义的URL意味着跟踪不起作用,因为跟踪代码已经更改。

    我已经结账了 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 回复  |  直到 6 年前