RubyでXMLをJSONに変換するライブラリはありますか?
質問する
46523 次
7 に答える
25
シンプルな XML および JSON パーサーであるCrackを使用します。
require "rubygems"
require "crack"
require "json"
myXML = Crack::XML.parse(File.read("my.xml"))
myJSON = myXML.to_json
于 2010-10-01T04:17:28.273 に答える
13
すべての属性を保持したい場合は、bagerfish 規則を使用する cobravsmongoose http://cobravsmongoose.rubyforge.org/をお勧めします 。
<alice sid="4"><bob sid="1">charlie</bob><bob sid="2">david</bob></alice>
になります:
{"alice":{"@sid":"4","bob":[{"$":"charlie","@sid":"1"},{"$":"david","@sid":"2"}]}}
コード:
require 'rubygems'
require 'cobravsmongoose'
require 'json'
xml = '<alice sid="4"><bob sid="1">charlie</bob><bob sid="2">david</bob></alice>'
puts CobraVsMongoose.xml_to_hash(xml).to_json
于 2011-01-27T17:32:50.310 に答える
2
libxmlを使用していると仮定すると、これのバリエーションを試すことができます(免責事項、これは私の限られたユースケースで機能します。完全に汎用的にするには微調整が必要になる場合があります)
require 'xml/libxml'
def jasonized
jsonDoc = xml_to_hash(@doc.root)
render :json => jsonDoc
end
def xml_to_hash(xml)
hashed = Hash.new
nodes = Array.new
hashed[xml.name+"_attributes"] = xml.attributes.to_h if xml.attributes?
xml.each_element { |n|
h = xml_to_hash(n)
if h.length > 0 then
nodes << h
else
hashed[n.name] = n.content
end
}
hashed[xml.name] = nodes if nodes.length > 0
return hashed
end
于 2011-02-22T15:35:34.373 に答える