Module: Parser

Defined in:
lib/Parser.rb

Defined Under Namespace

Classes: Element

Class Method Summary collapse

Class Method Details

.xml(string) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/Parser.rb', line 29

def xml(string)
  require 'rexml/document'
  xml = REXML::Document.new string

  y = Proc.new{|x|
    e = Element.new(x.namespace, x.name)
    x.attributes.each{|k,v| e.attr[k.to_sym] = v.to_s unless k =~ /^xmlns/} 
    x.each{|c|
      if c.is_a? REXML::Text
        e.elements.push c.to_s
      else
        e.elements.push y.call(c)
      end
    }
    e
  }  

  y.call(xml.root)
end