This seems to work for me:
use strict;
use XML::LibXML;
my $xml =<<'EOM';
<?xml version="1.0" encoding="ISO-8859-1" ?>
<form>
<method>POST</method>
<action>/cgi/process.cgi</action>
<input>
<type>text</type>
<name>name1</name>
<required>0</required>
<value></value>
<comment>This field is not required.</comment>
</input>
<input>
<type>text</type>
<name>name3</name>
<required>1</required>
<value></value>
<comment>Put three words here!</comment>
<test>
my @tmp = split(/\ /, shift());
return 1 if ( $#tmp == 2 );
return 0;
</test>
</input>
</form>
EOM
my $parser = XML::LibXML->new();
my $dom = $parser->parse_string( $xml );
my $info = $dom->createElement( 'info' );
my $failure = $dom->createElement( 'failure' );
my $reason = $dom->createTextNode( 'blah' );
$failure->appendChild( $reason );
$info->appendChild( $failure );
my $form = $dom->getDocumentElement;
$form->appendChild( $info );
print $dom->toString;