From: "NAKAMURA, Hiroshi" Date: 2002-04-11T11:05:45+09:00 Subject: Re: REXML queries Good morning from Japan, > From: NAKAMURA, Hiroshi [mailto:nahi@keynauts.com] > Sent: Wednesday, April 10, 2002 3:36 PM > I'll release 1.4.3 tonight . > > I tested it with REXML/2.0.*. Since REXML seems to be > changed around CES handling recently, it might not work > with REXML/2.1.*. I'll try 2.1.* tonight, too. Works fine. For now, SOAP4R transport reads all source string and converts it to UTF8 then pass it to REXML processor. So it is not streaming. I should walk REXML source and bring out its power. > IIRC, XMLRPC::Parser in xmlrpc4r is enough simple to > add other XML processor support. Is MNeumann in > vacation after their good hard work? No one did it yet? Patch. Try; (Server|Client)#set_parser( XMLRPC::XMLParser::REXMLStreamParser ) It does not support AbstractTreeParser because I don't know REXML's tree API well yet... diff -u2pr xmlrpc.dist/parser.rb xmlrpc/parser.rb --- xmlrpc.dist/parser.rb Wed Jan 30 01:55:42 2002 +++ xmlrpc/parser.rb Thu Apr 11 10:50:06 2002 @@ -620,4 +620,38 @@ module XMLRPC end # class NQXMLStreamParser + class REXMLStreamParser < AbstractStreamParser + def initialize + require "rexml/streamlistener" + require "rexml/document" + @parser_class = XMLRPCParser + XMLRPCParser.instance_eval { include REXML::StreamListener } + end + + class XMLRPCParser + include StreamParserMixin + + def parse(str) + REXML::Document.parse_stream(str, self) + end + + def tag_start( name, attrs ) + startElement(name, attrs) + end + + def tag_end( name ) + endElement(name) + end + + def text(text) + @data = text + end + + def xmldecl(version, encoding, standalone) + # I don't know how it should be processed in XML-RPC world. + end + end # class XMLRPCParser + + end # class REXMLStreamParser + class XMLTreeParser < AbstractTreeParser Here is another patch to reduce warning. diff -u2pr xmlrpc.dist/httpserver.rb xmlrpc/httpserver.rb --- xmlrpc.dist/httpserver.rb Wed Jan 30 01:55:42 2002 +++ xmlrpc/httpserver.rb Thu Apr 11 10:07:40 2002 @@ -67,4 +67,6 @@ private @status = status @header = Table.new + @body = nil + @status_message = nil end end diff -u2pr xmlrpc.dist/utils.rb xmlrpc/utils.rb --- xmlrpc.dist/utils.rb Wed Jan 30 01:55:42 2002 +++ xmlrpc/utils.rb Thu Apr 11 10:08:36 2002 @@ -114,5 +114,5 @@ module XMLRPC raise "No interface specified" if p.nil? super(prefix) - instance_eval &p + instance_eval(&p) end Regards, // NaHi