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
|
require 'ox'
module Ox
# This is an alternative parser for the stdlib xmlrpc library. It makes
# use of Ox and is based on REXMLStreamParser. To use it set is as the
# parser for an XMLRPC client:
#
# require 'xmlrpc/client'
# require 'ox/xmlrpc_adapter'
# client = XMLRPC::Client.new2('http://some_server/rpc')
# client.set_parser(Ox::StreamParser.new)
#
class StreamParser < XMLRPC::XMLParser::AbstractStreamParser
def initialize
@parser_class = OxParser
end
class OxParser < Ox::Sax
include XMLRPC::XMLParser::StreamParserMixin
alias :text :character
alias :end_element :endElement
alias :start_element :startElement
def parse(str)
Ox.sax_parse(self, StringIO.new(str), :symbolize => false, :convert_special => true)
end
end
end
end
|