将 nokogiri xml 节点转换为 ruby 哈希
converting nokogiri xml node into ruby hash
我有一个xml这样的
<parentNode>
<amount>12.0</amount><authIdCode>999999</ authIdCode><currency>USD</currency>
</parentNode>
如何让 ParentNode 中的所有节点都像下面这样散列?
{amount: "12", authIdCode: "999999", currency: "USD"}
是的,我可以使用 nokogiri
搜索单个键。但是是否可以获取ParentNode dynamically
内部的所有键和值并将其转换为哈希?
谢谢。
Note: Hash.from_xml wont work as am not using rails
这是一个工作示例:
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
的所有children,以孩子的名字为键,其文本内容为值。
使用Hash[]
:
Hash[doc.search('parentNode/*').map{|n| [n.name, n.text]}]
#=> {"amount"=>"12.0", "authIdCode"=>"999999", "currency"=>"USD"}
我有一个xml这样的
<parentNode>
<amount>12.0</amount><authIdCode>999999</ authIdCode><currency>USD</currency>
</parentNode>
如何让 ParentNode 中的所有节点都像下面这样散列?
{amount: "12", authIdCode: "999999", currency: "USD"}
是的,我可以使用 nokogiri
搜索单个键。但是是否可以获取ParentNode dynamically
内部的所有键和值并将其转换为哈希?
谢谢。
Note: Hash.from_xml wont work as am not using rails
这是一个工作示例:
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
的所有children,以孩子的名字为键,其文本内容为值。
使用Hash[]
:
Hash[doc.search('parentNode/*').map{|n| [n.name, n.text]}]
#=> {"amount"=>"12.0", "authIdCode"=>"999999", "currency"=>"USD"}