Class ToHashParser
In: lib/extlib/hash.rb
Parent: Object
Hash ToHashParser REXMLUtilityNode dot/f_7.png

Methods

from_xml  

Public Class methods

[Source]

     # File lib/extlib/hash.rb, line 418
418:   def self.from_xml(xml)
419:     stack = []
420:     parser = REXML::Parsers::BaseParser.new(xml)
421: 
422:     while true
423:       event = parser.pull
424:       case event[0]
425:       when :end_document
426:         break
427:       when :end_doctype, :start_doctype
428:         # do nothing
429:       when :start_element
430:         stack.push REXMLUtilityNode.new(event[1], event[2])
431:       when :end_element
432:         if stack.size > 1
433:           temp = stack.pop
434:           stack.last.add_node(temp)
435:         end
436:       when :text, :cdata
437:         stack.last.add_node(event[1]) unless event[1].strip.length == 0
438:       end
439:     end
440:     stack.pop.to_hash
441:   end

[Validate]