ruby将nokogiri xml转换为hash

时间:2016-05-01 11:59:59

标签: ruby xml nokogiri

我正在尝试将带有Nokogiri的XML转换为哈希:

<eveapi version="2">
  <currentTime>2016-05-01 11:38:14</currentTime>
  <result>
    <characterID>93898118</characterID>
    <characterName>Ghitzarai</characterName>
    <race>Minmatar</race>
    <bloodlineID>4</bloodlineID>
    <bloodline>Brutor</bloodline>
    <ancestryID>24</ancestryID>
    <ancestry>Slave Child</ancestry>
    <corporationID>98012663</corporationID>
    <corporation>Dry Atomic Fusion</corporation>
  </result>
</eveapi>

# asume xml is the above XML
hash = {}
xml.xpath('//result').each do |row|
  hash[get_node_name:] = row.content
end

现在row.name无效,因为只返回result一次。

如何从子节点获取正确的名称?

1 个答案:

答案 0 :(得分:2)

  

&#34;现在row.name不会工作因为只返回一次结果。如何从子节点获取正确的名称?&#34;

/*之后添加result以获取所有子元素<result>,无论子元素名称如何:

xml.xpath('//result/*').each do |row|