使用ruby中的xmlsimple将哈希转换为XML

时间:2011-03-04 12:17:58

标签: ruby xml xml-serialization

我有以下格式的哈希

{
 '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没有这样做。而不是推杆,它正在创造&lt; 1234&gt;标签

我想摆脱这个....任何帮助?甚至ActiveSupport to_xml也是如此。还有其他选择吗?

1 个答案:

答案 0 :(得分: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。