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"} 
Другие вопросы по тегам