如何将XML字符串添加到Nokogiri生成器



我有一个现有的Nokogiri构建器和来自不同来源的字符串中的一些xml节点。我如何将此字符串添加到我的构建器?

str = "<options><cc>true</cc></options>"
xml = Nokogiri::XML::Builder.new do |q|
  q.query do |f|
    f.name "awesome"
    f.filter str
  end
end

将str转义为如下格式:

xml.to_xml
=> "<?xml version="1.0"?>n<query>n  <name>awesome</name>n  <filter>&lt;options&gt;&lt;cc&gt;true&lt;/cc&gt;&lt;/options&gt;</filter>n</query>n"

我发现了很多很多类似的东西,包括嵌套构建器和使用<<操作符,但是无法将完整的XML节点树插入到构建块中。我怎样才能把这个字符串变成实节点呢?

您发现使用<<存在哪些问题?

xml = Nokogiri::XML::Builder.new do |q|
  q.query do |f|
    f.name "awesome"
    f << str
  end
end

并避免使用私有insert方法

和往常一样,我在发帖后不久就找到了答案…

xml = Nokogiri::XML::Builder.new do |q|
  q.query do |f|
    f.name "awesome"
    f.__send__ :insert, Nokogiri::XML::DocumentFragment.parse( str )
  end
end.to_xml

给你

=> "<?xml version="1.0"?>n<query>n  <name>awesome</name>n  <options>n    <cc>true</cc>n  </options>n</query>n"

编辑:当<<不知什么原因失败了。然而,正如其他人所指出的那样,它通过直接访问:insert方法来工作,该方法旨在被保护。把它看作是"坏做法"和最后的手段。

相关内容

  • 没有找到相关文章

最新更新