-
Notifications
You must be signed in to change notification settings - Fork 81
Closed
Description
- sax_test.rb
require 'rexml/parsers/sax2parser'
require 'libxml-ruby'
require 'nokogiri'
xml = <<EOS
<root>
</root>
EOS
class Listener
def method_missing(name, *args)
p [name, *args]
end
end
puts "REXML"
parser = REXML::Parsers::SAX2Parser.new(xml)
parser.listen(Listener.new)
parser.parse
puts ""
puts "LibXML"
parser = LibXML::XML::SaxParser.string(xml)
parser.callbacks = Listener.new
parser.parse
puts ""
puts "Nokogiri"
parser = Nokogiri::XML::SAX::Parser.new(Listener.new)
parser.parse(xml)
$ ruby sax_test.rb
REXML
[:start_document]
[:start_element, nil, "root", "root", {}]
[:progress, 6]
[:characters, "\n"]
[:progress, 7]
[:end_element, nil, "root", "root"]
[:progress, 14]
[:characters, "\n"] #<= This
[:progress, 15]
[:end_document]
LibXML
[:on_start_document]
[:on_start_element_ns, "root", {}, nil, nil, {}]
[:on_characters, "\n"]
[:on_end_element_ns, "root", nil, nil]
[:on_end_document]
Nokogiri
[:start_document]
[:start_element_namespace, "root", [], nil, nil, []]
[:characters, "\n"]
[:end_element_namespace, "root", nil, nil]
[:end_document]
REXML responds even after :characters
have closed the root tag.
I don't think[:characters, "\n"]
should respond after the root tag is closed.
What do you think?
Metadata
Metadata
Assignees
Labels
No labels