XML::LibXML::Document - DOM Document Class


  use XML::LibXML::Document;

  $dom = XML::LibXML::Document->new( $version, $encoding );
  $dom = XML::LibXML::Document->createDocument( $version, $encoding );
  $strEncoding = $doc->getEncoding();
  $strVersion = $doc->getVersion();
  $docstring = $dom->toString([$format]);
  $bool = $dom->is_valid();
  $root = $dom->getDocumentElement($name, $namespace );
  $dom->setDocumentElement( $root );
  $element = $dom->createElement( $nodename );
  $element = $dom->createElementNS( $namespaceURI, $qname );
  $text = $dom->createTextNode( $content_text );
  $comment = $dom->createComment( $comment_text );
  $attrnode = $doc->createAttribute($name [,$value]);
  $attrnode = $doc->createAttributeNS( namespaceURI, $name [,$value] );
  $cdata = $dom->create( $cdata_content );
  $document->importNode( $node [, $move] );


The Document Class is the result of a parsing process. But sometimes it is necessary to create a Document from scratch. The DOM Document Class provides functions that are conform to the DOM Core naming style. It inherits all functions from XML::LibXML::Node as specified in DOM Level2. This enables to access the nodes beside the root element on document level - a DTD for example. The support for these nodes is limited at the moment, so I would recommend, not to use node functions on documents. It is suggested that one should always create a node not bound to any document. There is no need of really including the node to the document, but once the node is bound to a document, it is quite safe that all strings have the correct encoding. If an unbound textnode with an iso encoded string is created (e.g. with $CLASS->new()), the toString function may not return the expected result. This seems like a limitation as long UTF8 encoding is assured. If iso encoded strings come into play it is much safer to use the node creation functions of XML::LibXML::Document.



alias for createDocument()


The constructor for the document class. As Parameter it takes the version string and (optionally) the ecoding string. Simply calling createDocument will create the document:

  <?xml version="your version" encoding="your encoding"?>

Both parameter are optional. The default value for $version is 1.0 , of course. If the $encoding parameter is not set, the encoding will be left unset, which means UTF8 is implied (and set). The call of createDocument without any parameter will result the following code:

  <?xml version="1.0"?>

returns the encoding string of the document


returns the version string of the document


toString is a deparsing function, so the DOM Tree can be translated into a string, ready for output. The optional $format parameter sets the indenting of the output. This parameter is expected to be an integer value, that specifies the number of linebreaks for each node. For more information about the formatted output check the documentation of xmlDocDumpFormatMemory in libxml2/tree.h .


Returns either TRUE or FALSE depending on the DOM Tree is a valid Document or not.


Returns the root element of the Document. A document can have just one root element to contain the documents data.


This function enables you to set the root element for a document. The function supports the import of a node from a different document tree.


This function creates a new Element Node bound to the DOM with the name $nodename .


This function creates a new Element Node bound to the DOM with the name $nodename and placed in the given namespace.


As an equivalent of createElement , but it creates a Text Node bound to the DOM.


As an equivalent of createElement , but it creates a Comment Node bound to the DOM.


Creates a new Attribute node. This function is rather useless at the moment, since there is no setAttributeNode function defined in XML::LibXML::Element , yet.


Creates an Attribute bound to a namespace.


Similar to createTextNode and createComment, this function creates a CDataSection bound to the current DOM.


If a node is not part of a document, it can be imported to another document. As specified in DOM Level 2 Specification the Node will not be altered or removed from its original document by default. ( $node-cloneNode(1)> will get called implicitly). Sometimes it is nessecary to move a node between documents. In such a case the node will not be copied, but removed from the original document.


XML::LibXML, XML::LibXML::Element, XML::LibXML::Text, XML::LibXML::Attr, XML::LibXML::Comment