|
|
RPC::XML::Parser - A container class for XML::Parser
use RPC::XML::Parser; ... $P = RPC::XML::Parser->new(); $P->parse($message);
The RPC::XML::Parser class encapsulates the parsing process, for turning a
string or an input stream into a RPC::XML::request or RPC::XML::response
object. The XML::Parser class is used internally, with a new instance
created for each call to parse
(detailed below). This allows the
RPC::XML::Parser object to be reusable, even though the XML::Parser
objects are not. The methods are:
new([ARGS])
Create a new instance of the class. Any extra data passed to the constructor is taken as key/value pairs (not a hash reference) and attached to the object.
The following parameters are currently recognized:
If passed with a true value, this tells the parser that incoming Base64 data
is to be spooled to a filehandle opened onto an anonymous temporary file. The
file itself is unlinked after opening, though the resulting RPC::XML::base64
object can use its to_file
method to save the data to a specific file at a
later point. No checks on size are made; if this option is set, all Base64
data goes to filehandles.
If this argument is passed, the value is taken as the directory under which
the temporary files are created. This is so that the application is not locked
in to the list of directories that File::Spec defaults to with its
tmpdir
method. If this is not passed, the previously-mentioned method is
used to derive the directory in which to create the temporary files. Only
relevant if base64_to_fh is set.
Parse the XML document specified in either a string or a stream. The stream may be any file descriptor, derivative of IO::Handle, etc. The return value is either an object reference (to one of RPC::XML::request or RPC::XML::response) or an error string. Any non-reference return value should be treated as an error condition.
If no argument is given, then the parse_start
method of XML::Parser is
used to create a XML::Parser::ExpatNB object, which is returned. This
object may then be used to parse the data in chunks, rather than a steady
stream. See the XML::Parser manual page for more details on how this
works.
The constructor returns undef
upon failure, with the error message available
in the global variable $RPC::XML::ERROR
.
This began as a reference implementation in which clarity of process and readability of the code took precedence over general efficiency. It is now being maintained as production code, but may still have parts that could be written more efficiently.
The XML-RPC standard is Copyright (c) 1998-2001, UserLand Software, Inc. See <http://www.xmlrpc.com> for more information about the XML-RPC specification.
This module is licensed under the terms of the Artistic License that covers Perl. See <http://www.opensource.org/licenses/artistic-license.php> for the license itself.
the RPC::XML manpage, the RPC::XML::Client manpage, the RPC::XML::Server manpage, the XML::Parser manpage
Randy J. Ray <rjray@blackperl.com>