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

Methods

from_xml  

Public Class methods

[Source]

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

[Validate]