XML::LibXML::Element - phpMan

Command: man perldoc info search(apropos)  


Sections
NAME SYNOPSIS METHODS OVERLOADING AUTHORS VERSION COPYRIGHT LICENSE
NAME
    XML::LibXML::Element - XML::LibXML Class for Element Nodes

SYNOPSIS
      use XML::LibXML;
      # Only methods specific to Element nodes are listed here,
      # see the XML::LibXML::Node manpage for other methods

      $node = XML::LibXML::Element->new( $name );
      $node->setAttribute( $aname, $avalue );
      $node->setAttributeNS( $nsURI, $aname, $avalue );
      $avalue = $node->getAttribute( $aname );
      $avalue = $node->getAttributeNS( $nsURI, $aname );
      $attrnode = $node->getAttributeNode( $aname );
      $attrnode = $node->getAttributeNodeNS( $namespaceURI, $aname );
      $node->removeAttribute( $aname );
      $node->removeAttributeNS( $nsURI, $aname );
      $boolean = $node->hasAttribute( $aname );
      $boolean = $node->hasAttributeNS( $nsURI, $aname );
      @nodes = $node->getChildrenByTagName($tagname);
      @nodes = $node->getChildrenByTagNameNS($nsURI,$tagname);
      @nodes = $node->getChildrenByLocalName($localname);
      @nodes = $node->getElementsByTagName($tagname);
      @nodes = $node->getElementsByTagNameNS($nsURI,$localname);
      @nodes = $node->getElementsByLocalName($localname);
      $node->appendWellBalancedChunk( $chunk );
      $node->appendText( $PCDATA );
      $node->appendTextNode( $PCDATA );
      $node->appendTextChild( $childname , $PCDATA );
      $node->setNamespace( $nsURI , $nsPrefix, $activate );
      $node->setNamespaceDeclURI( $nsPrefix, $newURI );
      $node->setNamespaceDeclPrefix( $oldPrefix, $newPrefix );

METHODS
    The class inherits from XML::LibXML::Node. The documentation for
    Inherited methods is not listed here.

    Many functions listed here are extensively documented in the DOM Level 3
    specification (<http://www.w3.org/TR/DOM-Level-3-Core/>). Please refer
    to the specification for extensive documentation.

    new
          $node = XML::LibXML::Element->new( $name );

        This function creates a new node unbound to any DOM.

    setAttribute
          $node->setAttribute( $aname, $avalue );

        This method sets or replaces the node's attribute $aname to the
        value $avalue

    setAttributeNS
          $node->setAttributeNS( $nsURI, $aname, $avalue );

        Namespace-aware version of "setAttribute", where $nsURI is a
        namespace URI, $aname is a qualified name, and $avalue is the value.
        The namespace URI may be null (empty or undefined) in order to
        create an attribute which has no namespace.

        The current implementation differs from DOM in the following aspects

        If an attribute with the same local name and namespace URI already
        exists on the element, but its prefix differs from the prefix of
        $aname, then this function is supposed to change the prefix
        (regardless of namespace declarations and possible collisions).
        However, the current implementation does rather the opposite. If a
        prefix is declared for the namespace URI in the scope of the
        attribute, then the already declared prefix is used, disregarding
        the prefix specified in $aname. If no prefix is declared for the
        namespace, the function tries to declare the prefix specified in
        $aname and dies if the prefix is already taken by some other
        namespace.

        According to DOM Level 2 specification, this method can also be used
        to create or modify special attributes used for declaring XML
        namespaces (which belong to the namespace
        "http://www.w3.org/2000/xmlns/" and have prefix or name "xmlns").
        This should work since version 1.61, but again the implementation
        differs from DOM specification in the following: if a declaration of
        the same namespace prefix already exists on the element, then
        changing its value via this method automatically changes the
        namespace of all elements and attributes in its scope. This is
        because in libxml2 the namespace URI of an element is not static but
        is computed from a pointer to a namespace declaration attribute.

    getAttribute
          $avalue = $node->getAttribute( $aname );

        If $node has an attribute with the name $aname, the value of this
        attribute will get returned.

    getAttributeNS
          $avalue = $node->getAttributeNS( $nsURI, $aname );

        Retrieves an attribute value by local name and namespace URI.

    getAttributeNode
          $attrnode = $node->getAttributeNode( $aname );

        Retrieve an attribute node by name. If no attribute with a given
        name exists, "undef" is returned.

    getAttributeNodeNS
          $attrnode = $node->getAttributeNodeNS( $namespaceURI, $aname );

        Retrieves an attribute node by local name and namespace URI. If no
        attribute with a given localname and namespace exists, "undef" is
        returned.

    removeAttribute
          $node->removeAttribute( $aname );

        The method removes the attribute $aname from the node's attribute
        list, if the attribute can be found.

    removeAttributeNS
          $node->removeAttributeNS( $nsURI, $aname );

        Namespace version of "removeAttribute"

    hasAttribute
          $boolean = $node->hasAttribute( $aname );

        This function tests if the named attribute is set for the node. If
        the attribute is specified, TRUE (1) will be returned, otherwise the
        return value is FALSE (0).

    hasAttributeNS
          $boolean = $node->hasAttributeNS( $nsURI, $aname );

        namespace version of "hasAttribute"

    getChildrenByTagName
          @nodes = $node->getChildrenByTagName($tagname);

        The function gives direct access to all child elements of the
        current node with a given tagname, where tagname is a qualified
        name, that is, in case of namespace usage it may consist of a prefix
        and local name. This function makes things a lot easier if one needs
        to handle big data sets. A special tagname '*' can be used to match
        any name.

        If this function is called in SCALAR context, it returns the number
        of elements found.

    getChildrenByTagNameNS
          @nodes = $node->getChildrenByTagNameNS($nsURI,$tagname);

        Namespace version of "getChildrenByTagName". A special nsURI '*'
        matches any namespace URI, in which case the function behaves just
        like "getChildrenByLocalName".

        If this function is called in SCALAR context, it returns the number
        of elements found.

    getChildrenByLocalName
          @nodes = $node->getChildrenByLocalName($localname);

        The function gives direct access to all child elements of the
        current node with a given local name. It makes things a lot easier
        if one needs to handle big data sets. A special "localname" '*' can
        be used to match any local name.

        If this function is called in SCALAR context, it returns the number
        of elements found.

    getElementsByTagName
          @nodes = $node->getElementsByTagName($tagname);

        This function is part of the spec. It fetches all descendants of a
        node with a given tagname, where "tagname" is a qualified name, that
        is, in case of namespace usage it may consist of a prefix and local
        name. A special "tagname" '*' can be used to match any tag name.

        In SCALAR context this function returns an XML::LibXML::NodeList
        object.

    getElementsByTagNameNS
          @nodes = $node->getElementsByTagNameNS($nsURI,$localname);

        Namespace version of "getElementsByTagName" as found in the DOM
        spec. A special "localname" '*' can be used to match any local name
        and "nsURI" '*' can be used to match any namespace URI.

        In SCALAR context this function returns an XML::LibXML::NodeList
        object.

    getElementsByLocalName
          @nodes = $node->getElementsByLocalName($localname);

        This function is not found in the DOM specification. It is a mix of
        getElementsByTagName and getElementsByTagNameNS. It will fetch all
        tags matching the given local-name. This allows one to select tags
        with the same local name across namespace borders.

        In SCALAR context this function returns an XML::LibXML::NodeList
        object.

    appendWellBalancedChunk
          $node->appendWellBalancedChunk( $chunk );

        Sometimes it is necessary to append a string coded XML Tree to a
        node. *appendWellBalancedChunk* will do the trick for you. But this
        is only done if the String is "well-balanced".

        *Note that appendWellBalancedChunk() is only left for compatibility
        reasons*. Implicitly it uses

          my $fragment = $parser->parse_balanced_chunk( $chunk );
           $node->appendChild( $fragment );

        This form is more explicit and makes it easier to control the flow
        of a script.

    appendText
          $node->appendText( $PCDATA );

        alias for appendTextNode().

    appendTextNode
          $node->appendTextNode( $PCDATA );

        This wrapper function lets you add a string directly to an element
        node.

    appendTextChild
          $node->appendTextChild( $childname , $PCDATA );

        Somewhat similar with "appendTextNode": It lets you set an Element,
        that contains only a "text node" directly by specifying the name and
        the text content.

    setNamespace
          $node->setNamespace( $nsURI , $nsPrefix, $activate );

        setNamespace() allows one to apply a namespace to an element. The
        function takes three parameters: 1. the namespace URI, which is
        required and the two optional values prefix, which is the namespace
        prefix, as it should be used in child elements or attributes as well
        as the additional activate parameter. If prefix is not given,
        undefined or empty, this function tries to create a declaration of
        the default namespace.

        The activate parameter is most useful: If this parameter is set to
        FALSE (0), a new namespace declaration is simply added to the
        element while the element's namespace itself is not altered.
        Nevertheless, activate is set to TRUE (1) on default. In this case
        the namespace is used as the node's effective namespace. This means
        the namespace prefix is added to the node name and if there was a
        namespace already active for the node, it will be replaced (but its
        declaration is not removed from the document). A new namespace
        declaration is only created if necessary (that is, if the element is
        already in the scope of a namespace declaration associating the
        prefix with the namespace URI, then this declaration is reused).

        The following example may clarify this:

          my $e1 = $doc->createElement("bar");
           $e1->setNamespace("http://foobar.org", "foo")

        results

          <foo:bar xmlns:foo="http://foobar.org"/>

        while

          my $e2 = $doc->createElement("bar");
           $e2->setNamespace("http://foobar.org", "foo",0)

        results only

          <bar xmlns:foo="http://foobar.org"/>

        By using $activate == 0 it is possible to create multiple namespace
        declarations on a single element.

        The function fails if it is required to create a declaration
        associating the prefix with the namespace URI but the element
        already carries a declaration with the same prefix but different
        namespace URI.

    setNamespaceDeclURI
          $node->setNamespaceDeclURI( $nsPrefix, $newURI );

        EXPERIMENTAL IN 1.61 !

        This function manipulates directly with an existing namespace
        declaration on an element. It takes two parameters: the prefix by
        which it looks up the namespace declaration and a new namespace URI
        which replaces its previous value.

        It returns 1 if the namespace declaration was found and changed, 0
        otherwise.

        All elements and attributes (even those previously unbound from the
        document) for which the namespace declaration determines their
        namespace belong to the new namespace after the change.

        If the new URI is undef or empty, the nodes have no namespace and no
        prefix after the change. Namespace declarations once nulled in this
        way do not further appear in the serialized output (but do remain in
        the document for internal integrity of libxml2 data structures).

        This function is NOT part of any DOM API.

    setNamespaceDeclPrefix
          $node->setNamespaceDeclPrefix( $oldPrefix, $newPrefix );

        EXPERIMENTAL IN 1.61 !

        This function manipulates directly with an existing namespace
        declaration on an element. It takes two parameters: the old prefix
        by which it looks up the namespace declaration and a new prefix
        which is to replace the old one.

        The function dies with an error if the element is in the scope of
        another declaration whose prefix equals to the new prefix, or if the
        change should result in a declaration with a non-empty prefix but
        empty namespace URI. Otherwise, it returns 1 if the namespace
        declaration was found and changed and 0 if not found.

        All elements and attributes (even those previously unbound from the
        document) for which the namespace declaration determines their
        namespace change their prefix to the new value.

        If the new prefix is undef or empty, the namespace declaration
        becomes a declaration of a default namespace. The corresponding
        nodes drop their namespace prefix (but remain in the, now default,
        namespace). In this case the function fails, if the containing
        element is in the scope of another default namespace declaration.

        This function is NOT part of any DOM API.

OVERLOADING
    XML::LibXML::Element overloads hash dereferencing to provide access to
    the element's attributes. For non-namespaced attributes, the attribute
    name is the hash key, and the attribute value is the hash value. For
    namespaced attributes, the hash key is qualified with the namespace URI,
    using Clark notation.

    Perl's "tied hash" feature is used, which means that the hash gives you
    read-write access to the element's attributes. For more information, see
    XML::LibXML::AttributeHash

AUTHORS
    Matt Sergeant, Christian Glahn, Petr Pajas

VERSION
    2.0134

COPYRIGHT
    2001-2007, AxKit.com Ltd.

    2002-2006, Christian Glahn.

    2006-2009, Petr Pajas.

LICENSE
    This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.


Generated by phpMan Author: Che Dong On Apache Under GNU General Public License - MarkDown Format
2026-05-23 08:44 @216.73.217.24 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 TransitionalValid CSS!

^_back to top