NAME

XML::LibXML::LazyBuilder - easy and lazy way to create XML document for XML::LibXML

SYNOPSIS

use XML::LibXML::LazyBuilder;

{
    package XML::LibXML::LazyBuilder;
    $d = DOM (E A => {at1 => "val1", at2 => "val2"},
              ((E B => {}, ((E "C"),
                            (E D => {}, "Content of D"))),
               (E E => {}, ((E F => {}, "Content of F"),
                            (E "G")))));
}

DESCRIPTION

You can describe XML documents like simple function call instead of using createElement, appendChild, etc...

FUNCTIONS

E
E "tagname", \%attr, @children

Creats CODEREF that generates XML::LibXML::Element which tag name is given by first argument. Rest arguments are list of text content or child element created by E (so you can nest E).

Since the output of this function is CODEREF, the creation of actual XML::LibXML::Element object will be delayed until DOM function is called.

DOM
DOM \&docroot, $var, $enc

Generates XML::LibXML::Document object actually. First argument is a CODEREF created by E function. $var is version number of XML docuemnt, "1.0" by default. $enc is encoding, "utf-8" by default.

EXPORT

None by default.

:all

Exports E and DOM.

EXAMPLES

I recommend to use package statement in a small scope so that you can use short function name and avoid to pollute global name space.

my $d;
{
    package XML::LibXML::LazyBuilder;
    $d = DOM (E A => {at1 => "val1", at2 => "val2"},
              ((E B => {}, ((E "C"),
                            (E D => {}, "Content of D"))),
               (E E => {}, ((E F => {}, "Content of F"),
                            (E "G")))));
}

Then, $d->toString will generate XML like this:

<?xml version="1.0" encoding="utf-8"?>
<A at1="val1" at2="val2"><B><C/><D>Content of D</D></B><E><F>Content of F</F><G/></E></A>

SEE ALSO

XML::LibXML

AUTHOR

Toru Hisai, <toru@torus.jp>

COPYRIGHT AND LICENSE

Copyright (C) 2008 by Toru Hisai

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.