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