use strict; use XML::LibXML; my $parser = XML::LibXML->new; my $doc = $parser->parse_file("minimal.xml"); my @vol = $doc->findnodes(q {/descendant::Volume[@VolumeCategory="6444"]}); foreach my $element (@vol) { print $element->parentNode->nodeName; print $element->parentNode(), $element->nodeValue(), "\n"; }