Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 on rails 如何删除<;散列></散列>;从format.xml_Ruby On Rails_Ruby_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 如何删除<;散列></散列>;从format.xml

Ruby on rails 如何删除<;散列></散列>;从format.xml,ruby-on-rails,ruby,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3.1,我有一个对象,有许多子对象,这些子对象应该呈现为xml。这不是问题。我的问题是,我创建了一个包含这些数据的散列,就像解析器需要它一样。但是rails原子性地用 <hash> <objects type="array"> <object> ... ... ... </object> </objects> </hash&g

我有一个对象,
有许多子对象,这些子对象应该呈现为xml。这不是问题。我的问题是,我创建了一个包含这些数据的
散列
,就像解析器需要它一样。但是rails原子性地用

<hash>
    <objects type="array">
        <object>
           ...
           ...
           ...
        </object>
    </objects>
</hash>

...
...
...

我需要摆脱
type=“array”
我如何处理这个问题?我没有在文档中找到任何内容。

我也有同样的问题

render :xml => @objects.to_xml(:root => :root_name, :skip_types => true)
这是我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<Contacts>
  <Contact type="array">
  </Contact>
</Contacts>
将散列数据转换为XML,但这会将条目的数据包装成

所以我修改了:

entries.to_xml(root: "Contacts")
但这仍然将转换后的XML包装在“Contacts”中,将我的XML代码修改为

<Contacts>
 <Contacts>
  <Contact type="array">
   <Contact>
    <Name></Name>
    <Email></Email>
    <Phone></Phone>
   </Contact>
  </Contact>
 </Contacts>
</Contacts>
这样可以避免包含
或任何附加根。
干杯

在现实世界中进行实际开发时,有各种各样的原因可以解释为什么您可能需要XML片段,即使您非常清楚实际的XML规范规定了一个根

但是,ActiveSupport的
Hash#to_xml
不支持此功能

下面是一个方法(外接程序
config/initializers/rootless_xml.rb
):


您是否尝试过
使用xml
方法?看起来这正是你的情况谢谢你做了一部分我自己找到了其余的=>
:skip_types=>true
@davidb像回答一样发布,但2天内无法接受答案我的输出xml中有标签。。。这不是我读到的问题的意图。“数组”已消失,但刚刚重命名。。还是那样。看起来不错:?[1,2,3]。到\u xml(:root=>:objects,:skip\u types=>true)=>“\n\n 1\n 2\n 3\n\n”
<Contacts>
 <Contacts>
  <Contact type="array">
   <Contact>
    <Name></Name>
    <Email></Email>
    <Phone></Phone>
   </Contact>
  </Contact>
 </Contacts>
</Contacts>
 entries["Contacts"].to_xml(root: "Contacts")
class Hash
  def to_rootless_xml(options = {})
    require 'active_support/builder' unless defined?(Builder)

    options = options.dup
    options[:indent]  ||= 2
    options[:root]    ||= 'hash'
    options[:builder] ||= Builder::XmlMarkup.new(indent: options[:indent])

    builder = options[:builder]
    builder.instruct! unless options.delete(:skip_instruct)


    each { |key, value| ActiveSupport::XmlMini.to_tag(key, value, options) }
    yield builder if block_given?
    builder.target!
  end
end