2010-02-01 136 views
1

我使用的ActiveSupport的to_xml以生成一个散列一些XML。红宝石哈希和数组到XML

我也需要对这个红宝石:

:Shipment => { 
    :Packages => [ 
    {:weight => '5', :type => 'box'}, 
    {:weight => '3', :type => 'tube'} 
    ] 
} 

要生成此XML:

<Shipment> 
    <Package> 
    <weight>5</weight> 
    <type>box</type> 
    </Package> 
    <Package> 
    <weight>3</weight> 
    <type>tube</type> 
    </Package> 
</Shipment> 

但是,相反,它包装在另一套XML标签像这样的数组:

<Shipment> 
    <Packages> 
    <Package> 
     <weight>5</weight> 
     <type>box</type> 
    </Package> 
    <Package> 
     <weight>3</weight> 
     <type>tube</type> 
    </Package> 
    </Packages> 
</Shipment> 

请不要告诉我,我需要改变我的XML结构......这是UPS怎么说的去做:(

任何人都知道一个变通?

+0

我只是检查出生成器...看起来很酷。任何建议到其他Ruby的XML工具将是伟大的。我已经检出了XML - 简单...它似乎有点有限。 REXML看起来好像将一个散列更改为xml可能很复杂。 – tybro0103

回答

4

检出建设者是要走的路。你的xml.builder看起来像这样:

xml.shipment do 
    @packages.each do |package| 
     xml.package do 
      xml.weight package.weight 
      xml.type package.type 
     end 
    end 
end