use XML::Rules; my $xml = q{ 25 Ableson Murine 26 yada yada 27 yada yada something else }; my $parser = XML::Rules->new( rules => [ Item => sub { $_[1]->{Name} => $_[1]->{_content}}, Id => 'content', DocSum => sub { print "$_[1]->{Id}, $_[1]->{Description}\n"; return; }, ] ); $parser->parse($xml);