将nokogiri xml节点转换为ruby哈希

时间:2017-08-07 16:09:35

标签: ruby xml hash nokogiri

我有像这样的xml

 <parentNode>

    <amount>12.0</amount><authIdCode>999999</ authIdCode><currency>USD</currency>

 </parentNode>

如何将ParentNode中的所有节点都变为下面的哈希?

{amount: "12", authIdCode: "999999", currency: "USD"}

是的我可以使用nokogiri搜索单个密钥。但是有可能在ParentNode dynamically中获取所有键和值并将其转换为哈希值吗?

谢谢。

  

注意:Hash.from_xml不能正常工作,因为我没有使用rails

2 个答案:

答案 0 :(得分:4)

使用EffectEntity<T>

Hash[]

答案 1 :(得分:2)

以下是一份工作样本:

require 'nokogiri'

xml = <<-EOS
<parentNode>
  <amount>12.0</amount>
  <authIdCode>999999</authIdCode>
  <currency>USD</currency>
</ parentNode>
EOS
document = Nokogiri::XML(xml)

hash = document.xpath("//parentNode/*").each_with_object({}) do |node, hash|
  hash[node.name] = node.text
end

p hash # => {"amount"=>"12.0", "authIdCode"=>"999999", "currency"=>"USD"}

它找到parentNode的所有子项,使用子项名称作为键,其文本内容作为值。