XML::Generator::DOM(3) User Contributed Perl Documentation XML::Generator::DOM(3)

# [NAME](#NAME)

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

# [SYNOPSIS](#SYNOPSIS)

```
        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>
```

# [DESCRIPTION](#DESCRIPTION)

XML::Generator::DOM subclasses XML::Generator in order to produce DOM trees instead of strings (see XML::Generator and XML::DOM). 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.

# [LICENSE](#LICENSE)

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

# [CONSTRUCTOR](#CONSTRUCTOR)

These configuration options are accepted but have no effect on the semantics of the returned object: escape, pretty, conformance and empty.

# [TAG METHODS](#TAG_METHODS)

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.

# [SPECIAL TAGS](#SPECIAL_TAGS)

All special tags are available by default with XML::Generator::DOM; you don't need to use 'conformance' =&gt; 'strict'.

## [xmlpi(@args)](#xmlpi%28@args%29)

Arguments will simply be concatenated and passed as the data to the XML::DOM::ProcessingInstruction object that is returned.

## [xmlcmnt](#xmlcmnt)

Escaping of '--' is done by XML::DOM::Comment, which replaces both hyphens with '&#45;'. An XML::DOM::Comment object is returned.

## [xmldecl](#xmldecl)

Returns an XML::DOM::XMLDecl object. Respects 'version', 'encoding' and 'dtd' settings in the object.

## [xmldecl](#xmldecl~2)

Returns an XML::DOM::DocumentType object.

## [xmlcdata](#xmlcdata)

Returns an XML::DOM::CDATASection object.

## [xml](#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.

2026-10-08 perl v5.44.0

---

Document: XML::Generator::DOM(3pm) from perl-xml-generator 1.13-r1 (Chainguard OS)
Source: https://github.com/timlegge/perl-XML-Generator
