lib/nori/parser/rexml.rb in nori-2.6.0 vs lib/nori/parser/rexml.rb in nori-2.7.0

- old
+ new

@@ -13,11 +13,12 @@ def self.parse(xml, options) stack = [] parser = ::REXML::Parsers::BaseParser.new(xml) while true - event = unnormalize(parser.pull) + raw_data = parser.pull + event = unnormalize(raw_data) case event[0] when :end_document break when :end_doctype, :start_doctype # do nothing @@ -26,18 +27,20 @@ when :end_element if stack.size > 1 temp = stack.pop stack.last.add_node(temp) end - when :text, :cdata + when :text stack.last.add_node(event[1]) unless event[1].strip.length == 0 || stack.empty? + when :cdata + stack.last.add_node(raw_data[1]) unless raw_data[1].strip.length == 0 || stack.empty? end end stack.length > 0 ? stack.pop.to_hash : {} end def self.unnormalize(event) - event.map! do |el| + event.map do |el| if el.is_a?(String) ::REXML::Text.unnormalize(el) elsif el.is_a?(Hash) el.each {|k,v| el[k] = ::REXML::Text.unnormalize(v)} else