XML-Stream
view release on metacpan or search on metacpan
lib/XML/Stream.pm view on Meta::CPAN
use vars qw($VERSION $PAC $SSL $NONBLOCKING %HANDLERS $NETDNS %XMLNS );
##############################################################################
# Define the namespaces in an easy/constant manner.
#-----------------------------------------------------------------------------
# 0.9
#-----------------------------------------------------------------------------
$XMLNS{'stream'} = "http://etherx.jabber.org/streams";
#-----------------------------------------------------------------------------
# 1.0
#-----------------------------------------------------------------------------
$XMLNS{'xmppstreams'} = "urn:ietf:params:xml:ns:xmpp-streams";
$XMLNS{'xmpp-bind'} = "urn:ietf:params:xml:ns:xmpp-bind";
$XMLNS{'xmpp-sasl'} = "urn:ietf:params:xml:ns:xmpp-sasl";
$XMLNS{'xmpp-session'} = "urn:ietf:params:xml:ns:xmpp-session";
$XMLNS{'xmpp-tls'} = "urn:ietf:params:xml:ns:xmpp-tls";
##############################################################################
if (eval "require Net::DNS;" )
{
require Net::DNS;
import Net::DNS;
$NETDNS = 1;
}
else
{
$NETDNS = 0;
}
$VERSION = "1.24";
$NONBLOCKING = 0;
#use XML::Stream::Namespace;
use XML::Stream::Parser;
use XML::Stream::XPath;
##############################################################################
#
# Setup the exportable objects
#
##############################################################################
my @EXPORT_OK = qw(Tree Node);
sub import
{
my $class = shift;
foreach my $module (@_)
{
eval "use XML::Stream::$module;";
die($@) if ($@);
my $lc = lc($module);
eval("\$HANDLERS{\$lc}->{startElement} = \\&XML::Stream::${module}::_handle_element;");
eval("\$HANDLERS{\$lc}->{endElement} = \\&XML::Stream::${module}::_handle_close;");
eval("\$HANDLERS{\$lc}->{characters} = \\&XML::Stream::${module}::_handle_cdata;");
}
}
=pod
=head2 new
new(
debug => string,
debugfh => FileHandle,
debuglevel => 0|1|N,
debugtime => 0|1,
style => string)
Creates the XML::Stream object.
B<debug> should be set to the path for the debug log
to be written. If set to "stdout" then the
debug will go there. Also, you can specify
a filehandle that already exists by using
B<debugfh>.
B<debuglevel> determines the amount of debug to generate.
0 is the least, 1 is a little more, N is the limit you want.
B<debugtime> determines wether a timestamp should be preappended
to the entry.
B<style> defines the way the data structure is
returned. The two available styles are:
tree - L<XML::Parser> Tree format
node - L<XML::Stream::Node> format
For more information see the respective man pages.
=cut
sub new
{
my $proto = shift;
my $self = { };
bless($self,$proto);
my %args;
while($#_ >= 0) { $args{ lc pop(@_) } = pop(@_); }
$self->{DATASTYLE} = "tree";
$self->{DATASTYLE} = delete($args{style}) if exists($args{style});
if ((($self->{DATASTYLE} eq "tree") && !defined($XML::Stream::Tree::LOADED)) ||
(($self->{DATASTYLE} eq "node") && !defined($XML::Stream::Node::LOADED))
)
{
croak( qq{The style that you have chosen was not defined when you "use"d the module.\n} );
}
$self->{DEBUGARGS} = \%args;
XML::Stream::Tools::setup_debug($self, %args);
( run in 0.717 second using v1.01-cache-2.11-cpan-140bd7fdf52 )