1 require "rexml/document"
2 require "rexml/streamlistener"
4 /\A(\d+)\.(\d+)(?:\.\d+)+\z/ =~ REXML::Version
5 if ([$1.to_i, $2.to_i] <=> [2, 5]) < 0
6 raise LoadError, "needs REXML 2.5 or later (#{REXML::Version})"
11 class REXMLParser < BaseParser
22 REXML::Document.parse_stream(@rss, @listener)
23 rescue RuntimeError => e
24 raise NotWellFormedError.new{e.message}
25 rescue REXML::ParseException => e
27 line = context[0] if context
28 raise NotWellFormedError.new(line){e.message}
34 class REXMLListener < BaseListener
36 include REXML::StreamListener
40 def raise_for_undefined_entity?
45 def xmldecl(version, encoding, standalone)
46 super(version, encoding, standalone == "yes")
47 # Encoding is converted to UTF-8 when REXML parse XML.
51 alias_method(:cdata, :text)