require 'xsd/xmlparser'
require 'xml/parser'
module XSD
module XMLParser
class XMLParser < XSD::XMLParser::Parser
class Listener < XML::Parser
begin
require 'xml/encoding-ja'
include XML::Encoding_ja
rescue LoadError
end
end
def do_parse(string_or_readable)
@charset = 'utf-8'
@parser = Listener.new
@parser.parse(string_or_readable) do |type, name, data|
case type
when XML::Parser::START_ELEM
start_element(name, data)
when XML::Parser::END_ELEM
end_element(name)
when XML::Parser::CDATA
characters(data)
else
raise FormatDecodeError.new("Unexpected XML: #{ type }/#{ name }/#{ data }.")
end
end
end
add_factory(self)
end
end
end