Жаль, что никто не ответил на ваш вопрос! Я попробую, хотя я не совсем уверен, что понимаю, что это такое.
Если я вас правильно понимаю, вы сможете получить то, что хотите, выполнив следующие действия:
arrayHash.to_xml(:root => "Cenarios", :skip_types => true, :skip_instruct => true)
Обратите внимание, что я изменил корень на Cenarios
во множественном числе. Это даст вам XML, как это:
<Cenorios>
<Cenorio>
<TamanhoRegistro>
<nomeCampo>Tamanho Registro</nomeCampo>
<X>10</X>
<Y>20</Y>
<valor>10</valor>
</TamanhoRegistro>
<VersaoRegistro>
<nomeCampo>Versao Registro</nomeCampo>
<X>10</X>
<Y>20</Y>
<valor>10</valor>
</VersaoRegistro>
</Cenorio>
</Cenorios>
Или вы говорили, что хотите, чтобы TamanhoRegistro
и VersaoRegistro
и такие были изменены на Cenario
? Если это так, предположим, что ваш arrayHash примерно такой:
arrayHash = [hashExemplo, otherHash]
Вы могли бы сделать что-то вроде этого:
arrayHash.map(&:values).flatten.to_xml(:root => "Cenorios", :skip_types => true)
, который даст вам XML, как показано ниже:
<Cenorios>
<Cenorio>
<nomeCampo>Tamanho Registro</nomeCampo>
<X>10</X>
<Y>20</Y>
<valor>10</valor>
</Cenorio>
<Cenorio>
<nomeCampo>Versao Registro</nomeCampo>
<X>10</X>
<Y>20</Y>
<valor>10</valor>
</Cenorio>
<Cenorio>
<nomeCampo>Tamanho Registro</nomeCampo>
<X>10</X>
<Y>20</Y>
<valor>10</valor>
</Cenorio>
<Cenorio>
<nomeCampo>Versao Registro</nomeCampo>
<X>10</X>
<Y>20</Y>
<valor>10</valor>
</Cenorio>
</Cenorios>
По сути, #map будет перебирать массив, получая массив из каждого хэша значений в хэше, поэтому теперь массив будет массивом массивов, поэтому #flatten сгладит это в один массив.
Это отвечает на ваш вопрос, или я что-то пропустил?