logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

AnyEvent::XMPP::Node - XML node tree helper for the parser.

Author

       Robin Redeker, "<elmex at ta-sa.org>", JID: "<elmex at jabber.org>"

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)oreq($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)oreq_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";

Name

       AnyEvent::XMPP::Node - XML node tree helper for the parser.

Synopsis

          use AnyEvent::XMPP::Node;
          ...

See Also