Class: ToHashParser
Overview
:nodoc:
Class Method Summary collapse
Class Method Details
.from_xml(xml) ⇒ Object
398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 |
# File 'lib/merb-core/core_ext/hash.rb', line 398 def self.from_xml(xml) stack = [] parser = REXML::Parsers::BaseParser.new(xml) while true event = parser.pull case event[0] when :end_document break when :end_doctype, :start_doctype # do nothing when :start_element stack.push REXMLUtilityNode.new(event[1], event[2]) when :end_element if stack.size > 1 temp = stack.pop stack.last.add_node(temp) end when :text, :cdata stack.last.add_node(event[1]) unless event[1].strip.length == 0 end end stack.pop.to_hash end |