XmlSimple为每个元素制作单元素数组 - 有更好的方法吗?

时间:2011-05-03 17:37:58

标签: ruby xml xml-simple

我正在使用XmlSimple将XML文档转换为ruby哈希。它会变成这样的数据:

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

进入这个:

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

请注意它是如何把所有内容都放在数组中的,我想是因为它不知道模式是否允许<offset>内的多个实例,例如<resultPage>[0]。因此,要访问我的数据,我总是在所有内容的末尾添加{{1}}。

我是否必须忍受这种情况,或者是否有一种优雅的方式?

1 个答案:

答案 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"}