Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何向Nokogiri Builder添加XML字符串_Ruby_Xml_Nokogiri - Fatal编程技术网

Ruby 如何向Nokogiri Builder添加XML字符串

Ruby 如何向Nokogiri Builder添加XML字符串,ruby,xml,nokogiri,Ruby,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=Nokogiri::xml

我有一个现有的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=Nokogiri::xml::Builder.new do | q|
q、 查询do|f|
f、 名字“真棒”
f、 过滤器str
结束
结束
这会使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.to_xml
=>“\n\n可怕的\n选项cctrue/cc/options\n\n”

我发现了很多很多类似的东西,包括筑巢建设者和使用,像往常一样,我在发布后不久就找到了答案

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"
=>“\n\n很棒\n\n正确\n\n\n”

编辑:这种方法对我很有效,当使用
时你发现了什么问题,这是一种很难做到的方法。请参阅@matt give的答案,它使用操作符附加原始XML。稍后更新nokogiri gem和一个bundle,@matt语法非常有效。我不知道该说什么,因为我试着用它来保持你的宝石在Ruby世界中的更新是一个很好的主意。在其他语言中我们落后于最前沿的地方,经常最好保持Ruby的最新发展。
xml = Nokogiri::XML::Builder.new do |q|
  q.query do |f|
    f.name "awesome"
    f << str
  end
end