Net::XMPP2::Node - XML node tree helper for the parser.
use Net::XMPP2::Node; ...
This class represens a XML node. Net::XMPP2 should usually not require messing with the parse tree, but sometimes it is neccessary.
If you experience any need for messing with these and feel Net::XMPP2 should rather take care of it drop me a mail, feature request or most preferably a patch!
Every Net::XMPP2::Node has a namespace, attributes, text and child nodes.
You can access these with the following methods:
Creates a new Net::XMPP2::Node object with the node tag name $el in the namespace URI $ns and the attributes $attrs. The $parser must be the instance of Net::XMPP2::Parser which generated this node.
$el
$ns
$attrs
$parser
Net::XMPP2::Parser
The tag name of this node.
Returns the namespace URI of this node.
Returns true whether the current element matches the tag name $name in the namespaces pointed at by $namespace_or_alias.
$name
$namespace_or_alias
You can either pass an alias that was defined in Net::XMPP2::Namespaces or pass an namespace URI in $namespace_or_alias. If no alias with the name $namespace_or_alias was found in Net::XMPP2::Namespaces it will be interpreted as namespace URI.
The first argument to eq can also be another Net::XMPP2::Node instance.
This method return true if the namespace of this instance of Net::XMPP2::Node matches the namespace described by $namespace_or_alias or the namespace of the $node which has to be another Net::XMPP2::Node instance.
$node
See eq for the meaning of $namespace_or_alias.
eq
Returns the contents of the $name attribute.
Adds a sub-node to the current node.
Returns a list of sub nodes.
Adds character data to the current node.
Returns the text for this node.
This method does a recursive descent through the sub-nodes and fetches all nodes that match the last element of @path.
@path
The elements of @path consist of a array reference to an array with two elements: the namespace key known by the $parser and the tagname we search for.
This writes the current node out to the Net::XMPP2::Writer object in $writer.
$writer
This method returns the original character representation of this XML element (and it's children nodes). Please note that the string is a unicode string, meaning: to get octets use:
my $octets = encode ('UTF-8', $node->as_string);
Now you can roll stunts like this:
my $libxml = XML::LibXML->new; my $doc = $libxml->parse_string (encode ('UTF-8', $node->as_string ()));
(You can use your favorite XML parser :)
This method is called by the parser to store original strings of this element.
This method takes anything that can receive SAX events. See also XML::GDOME::SAX::Builder or XML::Handler::BuildDOM or XML::LibXML::SAX::Builder.
With this you can convert this node to any DOM level 2 structure you want:
my $builder = XML::LibXML::SAX::Builder->new; $node->to_sax_events ($builder); my $dom = $builder->result; print "Canonized: " . $dom->toStringC14N . "\n";
Robin Redeker, <elmex at ta-sa.org>, JID: <elmex at jabber.org>
<elmex at ta-sa.org>
<elmex at jabber.org>
Copyright 2007 Robin Redeker, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Net::XMPP2, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Net::XMPP2
CPAN shell
perl -MCPAN -e shell install Net::XMPP2
For more information on module installation, please visit the detailed CPAN module installation guide.