/usr/lib/ruby/2.3.0/rss/xmlparser.rb is in libruby2.3 2.3.0-5ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | # frozen_string_literal: false
begin
require "xml/parser"
rescue LoadError
require "xmlparser"
end
begin
require "xml/encoding-ja"
rescue LoadError
require "xmlencoding-ja"
if defined?(Kconv)
module XMLEncoding_ja
class SJISHandler
include Kconv
end
end
end
end
module XML
class Parser
unless defined?(Error)
# This error is legacy, so we just set it to the new one
Error = ::XMLParserError # :nodoc:
end
end
end
module RSS
class REXMLLikeXMLParser < ::XML::Parser
include ::XML::Encoding_ja
def listener=(listener)
@listener = listener
end
def startElement(name, attrs)
@listener.tag_start(name, attrs)
end
def endElement(name)
@listener.tag_end(name)
end
def character(data)
@listener.text(data)
end
def xmlDecl(version, encoding, standalone)
@listener.xmldecl(version, encoding, standalone == 1)
end
def processingInstruction(target, content)
@listener.instruction(target, content)
end
end
class XMLParserParser < BaseParser
class << self
def listener
XMLParserListener
end
end
private
def _parse
begin
parser = REXMLLikeXMLParser.new
parser.listener = @listener
parser.parse(@rss)
rescue ::XML::Parser::Error => e
raise NotWellFormedError.new(parser.line){e.message}
end
end
end
class XMLParserListener < BaseListener
include ListenerMixin
def xmldecl(version, encoding, standalone)
super
# Encoding is converted to UTF-8 when XMLParser parses XML.
@encoding = 'UTF-8'
end
end
end
|