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