use warnings; use strict; use XML::Twig; my $file = 'input.xml'; XML::Twig->new( twig_roots => { '/martif/text/body/termEntry/*' => sub { my ($t, $elt) = @_; for my $e ($elt->get_xpath('./tig/term')) { print $elt->{att}->{'xml:lang'}, ": ", $e->text_only, "\n"; } $t->purge; }, }, )->parsefile($file);