XmlSimple создает одноэлементные массивы для каждого элемента - есть ли лучший способ?
Я использую XmlSimple, чтобы превратить XML-документ в рубиновый хеш. Получаются данные вот так:
<resultPage>
<total>2</total>
<offset>0</offset>
<limit>200</limit>
</resultPage>
В это:
{ :resultPage => [
{
:offset => [ "0" ],
:total => [ "2" ],
:limit => [ "200" ]
}
] }
Обратите внимание, как он помещает все внутри массива, я полагаю, потому что он не знает, допускает ли схема несколько экземпляров, скажем, <offset>
внутри <resultPage>
, Итак, чтобы получить доступ к моим данным, я всегда добавляю [0]
в конце всего.
Должен ли я просто жить с этим, или есть элегантный способ обойти это?
1 ответ
Решение
Вы можете передать опцию "ForceArray" в XmlSimple (по умолчанию это true, установить в false, чтобы избавиться от массивов).
> XmlSimple.xml_in(str)
=> {"total"=>["2"], "offset"=>["0"], "limit"=>["200"]}
> XmlSimple.xml_in(str, {"ForceArray" => false})
=> {"total"=>"2", "offset"=>"0", "limit"=>"200"}