Nokogiri で xml2hash
実際に使ってみたら色々と残念な動作をしたので直した
def xml2hash(doc) result = nil doc.children.each do |child| if child.text? return {doc.name.to_sym => doc.content} elsif child.cdata? return {doc.name.to_sym => doc.child.content} elsif child.blank? return {doc.name.to_sym => nil} else child_result = xml2hash(child) key = child_result.keys[0] value = child_result.values[0] result ||= {} if result[key] result[key] = [result[key]] unless result[key].class == Array result[key] << value else result[key] = value end end end {doc.name.to_sym => result} end doc = Nokogiri::XML(@session.body) do |config| config.noblanks end p xml2hash(doc.root)