XmlSimple создает одноэлементные массивы для каждого элемента - есть ли лучший способ? - PullRequest
0 голосов
/ 03 мая 2011

Я использую XmlSimple , чтобы превратить XML-документ в рубиновый хеш.Это превращает данные следующим образом:

<resultPage>
  <total>2</total>
  <offset>0</offset>
  <limit>200</limit>
</resultPage>

В это:

{ :resultPage => [
    {
      :offset => [ "0" ],
      :total  => [ "2" ],
      :limit  => [ "200" ]
    }
] }

Обратите внимание, как все это помещается в массив, я полагаю, потому что он не знает, допускает ли схема несколько экземпляровскажем, <offset>, внутри <resultPage>.Итак, чтобы получить доступ к своим данным, я всегда добавляю [0] в конце всего.

Нужно ли просто жить с этим, или есть элегантный способ обойти это?

1 Ответ

1 голос
/ 03 мая 2011

Вы можете передать опцию «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"} 
...