2011-03-04 66 views
1

,我有以下格式的哈希使用xmlsimple轉換散列XML紅寶石

{ 
'1234' => {"key1"=>1234,"key2"=>"sdfsdf","key3"=>"sdfsdfs"}, 
'234' => {"key1"=>234,"key2"=>"sdfsdf","key3"=>"sdfsdfs"} 
} 

我想將它轉換爲XML像下面

<?xml version="1.0" encoding="UTF-8"?> 
<MyKeys> 
    <MyKey> 
    <Key1>1234/Key1> 
    <Key2>sdfsdf</Key2> 
    <Key3>sdfsdfs</Key3> 
    </MyKey> 
    <MyKey> 
    <Key1>234/Key1> 
    <Key2>sdfsdf</Key2> 
    <Key3>sdfsdfs</Key3> 
    </MyKey> 
</MyKeys> 

的問題是,xmlsimple是不是做那。而不是放入,它會創建1238>1234>標記。

我想擺脫這....任何幫助?即使ActiveSupport to_xml也是如此。還有其他選擇嗎?

回答

2

外部散列的鍵肯定是1234234。 xmlsimple正在做正確的解析。你沒有在你的散列中提到MyKeysMyKey。在將其轉換爲xml之前,您應該將哈希轉換爲您所需的格式。

hash = { 
'1234' => {"key1"=>1234,"key2"=>"sdfsdf","key3"=>"sdfsdfs"}, 
'234' => {"key1"=>234,"key2"=>"sdfsdf","key3"=>"sdfsdfs"} 
} 
converted_hash = Hash[hash.map{|k, v| ["MyKey", v]}] 
result_hash = {"MyKeys" => converted_hash} 

在此散列上使用xmlsimple。

+0

我想使用哈希搜索也。因此我無法將密鑰轉換爲mykey。更多的是我不想通過哈希解析並更改密鑰。 – coder 2011-03-06 07:51:33

+0

我實際上做的是,我通過了哈希值,它只是哈希數組。那麼to_xml能夠以我需要的方式生成。 – coder 2011-03-06 07:52:41