Sha256: e7b403a51b19353403381543d16f74039773e344e48ece7393329e7d0f2a3afb
Contents?: true
Size: 1.04 KB
Versions: 3
Compression:
Stored size: 1.04 KB
Contents
require 'ox' require 'stringio' module Badgerfish class OxSaxParser < Ox::Sax def load(xml) @result = @root = {} @parents = [] Ox.sax_parse(self, StringIO.new(xml)) @result end # # sax callbacks # def start_element(name) new_element = {} name = name.to_s # force string representation of symbols if @root[name].nil? @root[name] = new_element else @root[name] = [@root[name]] unless @root[name].is_a?(Array) @root[name].push new_element end @parents.push @root @root = new_element end def end_element(name) @root = @parents.pop end def attr(name, value) unless name.to_s.start_with? 'xmlns' @root["@#{name}"] = value else @root['@xmlns'] ||= {} if name.to_s.start_with? 'xmlns:' @root['@xmlns'][name[6, name.length]] = value else @root['@xmlns']['$'] = value end end end def text(value) @root['$'] = value end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
badgerfish-0.0.5 | lib/badgerfish/ox_sax_parser.rb |
badgerfish-0.0.4 | lib/badgerfish/ox_sax_parser.rb |
badgerfish-0.0.3 | lib/badgerfish/ox_sax_parser.rb |