Nokogiri::XML::SAX::Document
Class that will build the hash while the XML document is being parsed using SAX events.
# File lib/active_support/xml_mini/nokogirisax.rb, line 61
61: def characters(string)
62: current_hash[CONTENT_KEY] << string
63: end
# File lib/active_support/xml_mini/nokogirisax.rb, line 23
23: def current_hash
24: @hash_stack.last
25: end
# File lib/active_support/xml_mini/nokogirisax.rb, line 32
32: def end_document
33: raise "Parse stack not empty!" if @hash_stack.size > 1
34: end
# File lib/active_support/xml_mini/nokogirisax.rb, line 54
54: def end_element(name)
55: if current_hash.length > current_hash.delete(HASH_SIZE_KEY) && current_hash[CONTENT_KEY].blank? || current_hash[CONTENT_KEY] == ''
56: current_hash.delete(CONTENT_KEY)
57: end
58: @hash_stack.pop
59: end
# File lib/active_support/xml_mini/nokogirisax.rb, line 36
36: def error(error_message)
37: raise error_message
38: end
# File lib/active_support/xml_mini/nokogirisax.rb, line 27
27: def start_document
28: @hash = {}
29: @hash_stack = [@hash]
30: end
# File lib/active_support/xml_mini/nokogirisax.rb, line 40
40: def start_element(name, attrs = [])
41: new_hash = { CONTENT_KEY => '' }
42: new_hash[attrs.shift] = attrs.shift while attrs.length > 0
43: new_hash[HASH_SIZE_KEY] = new_hash.size + 1
44:
45: case current_hash[name]
46: when Array then current_hash[name] << new_hash
47: when Hash then current_hash[name] = [current_hash[name], new_hash]
48: when nil then current_hash[name] = new_hash
49: end
50:
51: @hash_stack.push(new_hash)
52: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.