=========================== Some Text A Some Text A xsi:type="foo" GeneralID="Random1" > YYYYYYYYYYY ZZZZZZZZZZZ xsi:type="foo" GeneralID="Random2" > YYYYYYYYYY22 ZZZZZZZZZZ22 xsi:type="foo" GeneralID="Random3" > YYYYYYYYY333 ZZZZZZZZZ333 =========================== use strict; use XML::LibXML; my $version = "v0.1 - Dances with XML"; my $parser = XML::LibXML->new(); $parser->recover_silently(1); my $doc = $parser->parse_file('test.xml'); #<-- The above XML my $xpc = XML::LibXML::XPathContext->new($doc); $xpc->registerNs(theNS => 'http://www.wow.com/BlahML'); my @MiddleNodeBits = $xpc->findnodes('//theNS:MiddleTag'); foreach my $nodeybits (@MiddleNodeBits) { # [1] Works but only gives me "Random1". Expected Random1,2 and 3 print $nodeybits->findnodes('//@GeneralID')->string_value . "\n"; # [2] Works...but gives me the entire XML once. Not very useful. print $nodeybits->findnodes('//*')->string_value . "\n"; ############################################## # No output from lines below-Not sure why? ############################################## # [3] print $nodeybits->findnodes('//CannotGetTagA')->string_value . "\n"; # [4] print $nodeybits->findnodes('/RootTag/MiddleTag[1]/MyImportantNode[1]/CannotGetTagA[1]/text()')->string_value . "\n"; # [5] print $nodeybits->findnodes('theNS:RootTag/MiddleTag[1]/MyImportantNode[1]/CannotGetTagA[1]/text()')->string_value . "\n"; # [6] print $nodeybits->findnodes('//RootTag/MiddleTag[1]/MyImportantNode/CannotGetTagA/text()')->string_value . "\n"; } exit(0);