преобразование хеша в XML с использованием xmlsimple в ruby - PullRequest
1 голос
/ 04 марта 2011

У меня есть хэш следующего формата

{
 '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 этого не делает.вместо того, чтобы ставить, он создает тег <1234>.

Я хочу избавиться от этого .... любая помощь?даже ActiveSupport to_xml делает то же самое.есть ли другие варианты?

1 Ответ

2 голосов
/ 05 марта 2011

Ключ для внешнего хеша определенно равен 1234 и 234.xmlsimple выполняет правильный анализ.Вы не упомянули о MyKeys или MyKey в своем хеше.Вы должны преобразовать хеш в нужный вам формат, прежде чем конвертировать его в 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 для этого хеша.

...