use warnings; use strict; use XML::LibXML; my $doc = XML::LibXML->load_xml( location => '/tmp/foo.xml' ); my $xpc = XML::LibXML::XPathContext->new($doc); $xpc->registerNs('foo', 'urn:foo:names:tc:doc:document:1.2'); foreach my $tu ($xpc->findnodes('/foo:doc/foo:body/foo:node')) { for my $node ($xpc->findnodes('foo:node1', $tu)) { print "$node\n"; } }