---
name: "XML::Generator::DOM"
section: "3"
platform: "linux"
package: "libxml-generator-perl"
version: "0.91-5"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/XML::Generator::DOM"
---

# XML::Generator::DOM(3)

XML::Generator subclass for producing DOM trees instead of strings.

```
        use XML::Generator::DOM;
```

```
        my $dg  = XML::Generator::DOM->new();
        my $doc = $dg->xml($dg->xmlcmnt("Test document."),
                           $dg->foo({'baz' => 'bam'}, 42));
        print $doc->toString;
```

yields:

```
        <?xml version="1.0" standalone="yes"?>
        <!--Test document-->
        <foo baz="bam">42</foo>
```

XML::Generator::DOM subclasses XML::Generator in order to produce DOM trees instead of strings (see the XML::Generator manpage and the XML::DOM manpage).  This module is still experimental and its semantics might change. Essentially, tag methods return XML::DOM::DocumentFragment objects, constructed either from a DOM document passed into the constructor or a default document that XML::Generator::DOM will automatically construct. Calling the *xml()* method will return this automatically constructed document and cause a fresh one to be constructed for future tag method calls.  If you passed in your own document, you may not call the *xml()* method. Below, we just note the remaining differences in semantics between XML::Generator methods and XML::Generator::DOM methods. These configuration options are accepted but have no effect on the semantics of the returned object: escape, pretty, conformance and empty. Subsequently, tag method semantics are somewhat different for this module compared to XML::Generator.  The primary difference is that tag method return XML::DOM::DocumentFragment objects.  Namespace and attribute processing remains the same, but remaining arguments to tag methods must either be text or other XML::DOM::DocumentFragment objects.  No escape processing, syntax checking, or output control is done; this is all left up to XML::DOM. All special tags are available by default with XML::Generator::DOM; you don't need to use 'conformance' =\> 'strict'.\
 **xmlpi(@args)** Arguments will simply be concatenated and passed as the data to the XML::DOM::ProcessingInstruction object that is returned.\
 **xmlcmnt** Escaping of '--' is done by XML::DOM::Comment, which replaces both hyphens with '&#45;'.  An XML::DOM::Comment object is returned.\
 **xmldecl** Returns an XML::DOM::XMLDecl object.  Respects 'version', 'encoding' and 'dtd' settings in the object.\
 **xmldecl** Returns an XML::DOM::DocumentType object.\
 **xmlcdata** Returns an XML::DOM::CDATASection object.\
 **xml** As described above, *xml()* can only be used when dom\_document was not set in the object.  The automatically created document will have its XML Declaration set and the arguments to *xml()* will be appended to it.  Then a new DOM document is automatically generated and the old one is returned.  This is the only way to get a DOM document from this module.
