# phpman > perldoc > XML::Generator::DOM

## NAME
    [XML::Generator::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator%3A%3ADOM/markdown) - [XML::Generator](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator/markdown) subclass for producing DOM trees instead of strings.

## SYNOPSIS
            use [XML::Generator::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator%3A%3ADOM/markdown);

            my $dg  = [XML::Generator::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator%3A%3ADOM/markdown)->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
    [XML::Generator::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator%3A%3ADOM/markdown) subclasses [XML::Generator](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator/markdown) in order to produce DOM trees instead of strings
    (see [XML::Generator](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator/markdown) and [XML::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM/markdown)). This module is still experimental and its semantics might
    change.

    Essentially, tag methods return [XML::DOM::DocumentFragment](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocumentFragment/markdown) objects, constructed either from a
    DOM document passed into the constructor or a default document that [XML::Generator::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator%3A%3ADOM/markdown) 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](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator/markdown) methods and
    [XML::Generator::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator%3A%3ADOM/markdown) methods.

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

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

## TAG METHODS
    Subsequently, tag method semantics are somewhat different for this module compared to
    [XML::Generator](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator/markdown). The primary difference is that tag method return [XML::DOM::DocumentFragment](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocumentFragment/markdown)
    objects. Namespace and attribute processing remains the same, but remaining arguments to tag
    methods must either be text or other [XML::DOM::DocumentFragment](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocumentFragment/markdown) objects. No escape processing,
    syntax checking, or output control is done; this is all left up to [XML::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM/markdown).

## SPECIAL TAGS
    All special tags are available by default with [XML::Generator::DOM](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3AGenerator%3A%3ADOM/markdown); 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](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3AProcessingInstruction/markdown) object that is returned.

  xmlcmnt
    Escaping of '--' is done by [XML::DOM::Comment](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3AComment/markdown), which replaces both hyphens with '&#45;'. An
    [XML::DOM::Comment](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3AComment/markdown) object is returned.

  xmldecl
    Returns an [XML::DOM::XMLDecl](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3AXMLDecl/markdown) object. Respects 'version', 'encoding' and 'dtd' settings in the
    object.

  xmldecl
    Returns an [XML::DOM::DocumentType](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ADocumentType/markdown) object.

  xmlcdata
    Returns an [XML::DOM::CDATASection](https://www.chedong.com/phpMan.php/perldoc/XML%3A%3ADOM%3A%3ACDATASection/markdown) 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.

