Closed naitoh closed 2 weeks ago
require 'rexml/parsers/sax2parser' require 'libxml-ruby' require 'nokogiri'
xml = <<EOS
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)
```bash $ 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?
:characters
[:characters, "\n"]
I agree with you.
xml = <<EOS
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)
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?