循环使用XML在Ruby中创建哈希数组

循环使用XML在Ruby中创建哈希数组,ruby,xml,arrays,hashmap,Ruby,Xml,Arrays,Hashmap,我有以下XML <CallResult> <Success>true</Success> <Result> <ZoneInfo> <Id>3</Id> <Name>test-room</Name> <NId>sdfsdg</NId> </ZoneInfo> <ZoneInfo>

我有以下XML

<CallResult>
  <Success>true</Success>
  <Result>
    <ZoneInfo>
      <Id>3</Id>
      <Name>test-room</Name>
      <NId>sdfsdg</NId>
    </ZoneInfo>
    <ZoneInfo>
      <Id>16</Id>
      <Name>Dynamic</Name>
      <NId>sadadrwed543th</NId>
    </ZoneInfo>
    <ZoneInfo>
      <Id>32</Id>
      <Name>lobby</Name>
      <NId>ssdfrgfdfg</NId>
    </ZoneInfo>
    <ZoneInfo>
      <Id>33</Id>
      <Name>conf</Name>
      <NId>sdfsfewr232f</NId>
    </ZoneInfo>
  </Result>
  <Message>Success</Message>
</CallResult>
有没有人能提供更多的信息来帮助我们循环提取每个“ZoneInfo”元素的信息


谢谢

我使用了另一个gem“nokogiri”,也许是现在解析HTML/XML的最好的gem

require 'nokogiri'

str = "<CallResult> ......"
doc = Nokogiri.XML(str)
Zones = []
doc.xpath('//ZoneInfo').each do |zone|
  Zones << { "Id" => zone.xpath('Id').text, "Name" => zone.xpath('Name').text, "NId" => zone.xpath("NId").text}
end

我使用另一个gem‘nokogiri’,也许是现在解析HTML/XML的最好的gem

require 'nokogiri'

str = "<CallResult> ......"
doc = Nokogiri.XML(str)
Zones = []
doc.xpath('//ZoneInfo').each do |zone|
  Zones << { "Id" => zone.xpath('Id').text, "Name" => zone.xpath('Name').text, "NId" => zone.xpath("NId").text}
end

你只需要使用诺丽宝石

require 'nori'
your_hash = Nori.parse(your_xml)
如果您需要以这种方式存储数据,那么将这个嵌套哈希转换为哈希数组应该很简单


如果您需要更多信息,api文档在这里-

您只需使用nori gem即可

require 'nori'
your_hash = Nori.parse(your_xml)
如果您需要以这种方式存储数据,那么将这个嵌套哈希转换为哈希数组应该很简单

如果您需要更多信息,api文档在这里-