Provided by: libanyevent-xmpp-perl_0.55-6_all
NAME
AnyEvent::XMPP::Node - XML node tree helper for the parser.
SYNOPSIS
use AnyEvent::XMPP::Node; ...
DESCRIPTION
This class represens a XML node. AnyEvent::XMPP 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 AnyEvent::XMPP should rather take care of it drop me a mail, feature request or most preferably a patch! Every AnyEvent::XMPP::Node has a namespace, attributes, text and child nodes. You can access these with the following methods:
METHODS
new ($ns, $el, $attrs, $parser) Creates a new AnyEvent::XMPP::Node object with the node tag name $el in the namespace URI $ns and the attributes $attrs. The $parser must be the instance of "AnyEvent::XMPP::Parser" which generated this node. name The tag name of this node. namespace Returns the namespace URI of this node. eq ($namespace_or_alias, $name) or eq ($node) Returns true whether the current element matches the tag name $name in the namespaces pointed at by $namespace_or_alias. You can either pass an alias that was defined in AnyEvent::XMPP::Namespaces or pass an namespace URI in $namespace_or_alias. If no alias with the name $namespace_or_alias was found in AnyEvent::XMPP::Namespaces it will be interpreted as namespace URI. The first argument to eq can also be another AnyEvent::XMPP::Node instance. eq_ns ($namespace_or_alias) or eq_ns ($node) This method return true if the namespace of this instance of AnyEvent::XMPP::Node matches the namespace described by $namespace_or_alias or the namespace of the $node which has to be another AnyEvent::XMPP::Node instance. See "eq" for the meaning of $namespace_or_alias. attr ($name) Returns the contents of the $name attribute. add_node ($node) Adds a sub-node to the current node. nodes Returns a list of sub nodes. add_text ($string) Adds character data to the current node. text Returns the text for this node. find_all (@path) This method does a recursive descent through the sub-nodes and fetches all nodes that match the last element of @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. write_on ($writer) This writes the current node out to the AnyEvent::XMPP::Writer object in $writer. as_string () 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 :) append_raw ($string) This method is called by the parser to store original strings of this element. to_sax_events ($handler) 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";
AUTHOR
Robin Redeker, "<elmex at ta-sa.org>", JID: "<elmex at jabber.org>"
COPYRIGHT & LICENSE
Copyright 2007, 2008 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.