use strict; use warnings; use XML::Twig::XPath; $/ = undef; my $data = ; my $twig=XML::Twig::XPath->new(pretty_print => 'nice', keep_encoding=>1, twig_handlers => { 'add' => \&_checkAdd, } ); $twig->parse($data); # build ito my $out = $twig->sprint; print $out; sub _checkAdd { my( $t, $addAttr)= @_; my $elt; $addAttr->set_tag('check'); $elt= parse XML::Twig::Elt( qq(

test

) ); $elt->paste('last_child',$addAttr); } __DATA__ with Ü here