use XML::Mini::Document; my $newDoc = XML::Mini::Document->new(); my $root = $newDoc->getRoot(); my $header = $root->header('xml'); # set the header $header->attribute('version', '1.0'); my $kid = $root->createChild('foo'); $kid->text("Yes, I am a kid"); $root->createChild('foo')->text('Me Too'); print $newDoc->toString(); __END__ Yes, I am a kid Me Too #### package XML::Mini::Element; sub insertNode { splice @{ $_[0]->{_children} }, $_[1], 0, $_[2]; return $_[2]; } sub prependNode { unshift @{ $_[0]->{_children} }, $_[1]; return $_[1]; } sub removeNode { return splice @{ $_[0]->{_children} }, $_[1], 1; } sub removeAllNodes { my $kids = $_[0]->{_children}; $_[0]->{_children} = []; return $kids; } sub getAllNodes { return $_[0]->{_children}; }