2013-11-21 29 views
0

我用下面的代碼哈希轉換成XML嵌套哈希轉換爲XML時得到刪除XML節點在Ruby中

{:users => { 
    :name_age_node => {:name => "Bob", :age => 50}, 
    :name_age_node => {:name => "Tom", :age => 45}, 
    :name_age_node => {:name => "Jess", :age => 22} 
} 

什麼輸出僅僅是最後一個節點..其他節點由於某種原因被覆蓋。所有沒有重複節點且名稱相同的節點都可以,無論它們是否嵌套。

關於爲什麼會發生這種情況的任何想法?

+0

什麼庫使用? –

+1

您不能使用具有多個值的相同鍵的哈希。 – Phrogz

回答

3

你正在處理哈希。哈希只支持特定鍵的單個事件:

foo = {:users => { 
    :name_age_node => {:name => "Bob", :age => 50}, 
    :name_age_node => {:name => "Tom", :age => 45}, 
    :name_age_node => {:name => "Jess", :age => 22} 
    } 
} 
foo 
# => {:users=>{:name_age_node=>{:name=>"Jess", :age=>22}}} 

憑藉獨特的鍵:

foo = {:users => { 
    :name_age_node1 => {:name => "Bob", :age => 50}, 
    :name_age_node2 => {:name => "Tom", :age => 45}, 
    :name_age_node3 => {:name => "Jess", :age => 22} 
    } 
} 
foo 
# => {:users=> 
#  {:name_age_node1=>{:name=>"Bob", :age=>50}, 
#  :name_age_node2=>{:name=>"Tom", :age=>45}, 
#  :name_age_node3=>{:name=>"Jess", :age=>22}}} 

或者你可以使用哈希數組包含內部數據:

foo = {:users => [ 
    {:name => "Bob", :age => 50}, 
    {:name => "Tom", :age => 45}, 
    {:name => "Jess", :age => 22} 
    ] 
} 
foo 
# => {:users=> 
#  [{:name=>"Bob", :age=>50}, 
#  {:name=>"Tom", :age=>45}, 
#  {:name=>"Jess", :age=>22}]} 
#  :name_age_node3=>{:name=>"Jess", :age=>22}}}