2010-02-01 200 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