Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 从Nokogiri格式化XML_Ruby On Rails_Ruby_Xml_Nokogiri - Fatal编程技术网

Ruby on rails 从Nokogiri格式化XML

Ruby on rails 从Nokogiri格式化XML,ruby-on-rails,ruby,xml,nokogiri,Ruby On Rails,Ruby,Xml,Nokogiri,我正在使用Nokogiri创建XML: class Output require 'nokogiri' def self.xml data = IncomingData.all builder = Nokogiri::XML::Builder.new do |xml| xml.root { data.each do |o| xml.id { xml.account_id_ o.account

我正在使用Nokogiri创建XML:

 class Output
  require 'nokogiri'

  def self.xml
    data = IncomingData.all
    builder = Nokogiri::XML::Builder.new do |xml|
      xml.root {
        data.each do |o|
          xml.id {
            xml.account_id_    o.account_id
            xml.date_          o.date
            xml.account_type  o.account_type
            xml.activity      o.activity
            xml.position      o.position
            xml.security      o.security
          }

        end
      }
    end
    builder.to_xml
  end
end
这是我的控制器操作:

 respond_to do |format|
  format.xml { render xml: Output.xml }
end
这很有效:

但我需要用缩进输出它,如:

account_id
  date
   account_type
我怎么能做到

ruby-v
返回:

ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin14.0]
# Nokogiri (1.6.7)
nokogiri--version
返回:

ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin14.0]
# Nokogiri (1.6.7)

只需创建有效的散列并添加到他。要使用xml方法,请求的输出不是xml?您希望它是XML还是仅包含缩进的字符串?@Yule i want XML with indentationBuilder默认情况下应输出包含缩进的XML。@builder对象上的.to_xml方法将为您执行此操作。@cherrysoft我执行了'@builder.to_xml',但没有工作。您可以详细说明Ruby和Nokogiri库的哪些版本吗?欢迎使用堆栈溢出。答案需要不止一行;解释其工作原理,并举例说明如何执行。这更像是一个评论。