use strict; use warnings; use XML::LibXML; my $doc = XML::LibXML->new->parse_fh(*DATA); for ( $doc->findnodes("//*") ) { $_->parentNode->removeChild($_) unless $_->textContent() =~ /\S/ or $_->hasAttributes(); } print $doc->serialize(1); __END__ blah602527000831 prelistenMTT00602527000831.mmf blackberry9000_ver1 nokia_e71_ver1_subua2 mot_l6_ver1