use strict; use warnings; use XML::Twig; my $twig=XML::Twig->new( twig_handlers => { 'dob' => sub{ $_->delete;}, 'dobs' => sub{ $_->delete;}, _default_ => sub{ $_[0]->flush }, }, pretty_print => 'indented', empty_tags => 'normal', ); $twig->parse( *DATA ); __DATA__ <position xsi:nil="true"/> <names> <first_name/> <last_name>BA</last_name> </names> <agedata> <age xsi:nil="true"/> <as_of_date xsi:nil="true"/> <dob xsi:nil="true"/> <dobs> <dob xsi:nil="true"/> </dobs> <deceased xsi:nil="true"/> </agedata> </person> <details> <id_numbers> <id loc="INT" type="">fd</id> </id_numbers> <place_of_birth xsi:nil="true"/> <locations> <location country="df" city="re" state="">Shahrara</location> </locations> </details> </record>