lib/dwc-archive/xml_reader.rb in dwc-archive-0.9.6 vs lib/dwc-archive/xml_reader.rb in dwc-archive-0.9.10

- old
+ new

@@ -1,18 +1,16 @@ # USAGE: Hash.from_xml:(YOUR_XML_STRING) require 'nokogiri' -# modified from http://stackoverflow.com/questions/1230741/convert-a-nokogiri-document-to-a-ruby-hash/1231297#1231297 +# modified from +# http://stackoverflow.com/questions/1230741/ +# convert-a-nokogiri-document-to-a-ruby-hash/1231297#1231297 class DarwinCore module XmlReader class << self def from_xml(xml_io) - begin - result = Nokogiri::XML(xml_io) - return { result.root.name.to_sym => xml_node_to_hash(result.root)} - rescue Exception => e - raise e - end + result = Nokogiri::XML(xml_io) + return { result.root.name.to_sym => xml_node_to_hash(result.root)} end private def xml_node_to_hash(node) @@ -20,11 +18,12 @@ if node.element? result_hash = {} if node.attributes != {} result_hash[:attributes] = {} node.attributes.keys.each do |key| - result_hash[:attributes][node.attributes[key].name.to_sym] = prepare(node.attributes[key].value) + result_hash[:attributes][node.attributes[key]. + name.to_sym] = prepare(node.attributes[key].value) end end if node.children.size > 0 node.children.each do |child| result = xml_node_to_hash(child) @@ -35,10 +34,11 @@ end elsif result_hash[child.name.to_sym] if result_hash[child.name.to_sym].is_a?(Object::Array) result_hash[child.name.to_sym] << prepare(result) else - result_hash[child.name.to_sym] = [result_hash[child.name.to_sym]] << prepare(result) + result_hash[child.name.to_sym] = + [result_hash[child.name.to_sym]] << prepare(result) end else result_hash[child.name.to_sym] = prepare(result) end end