http://www.perlmonks.org?node_id=1067675


in reply to Retrieving an XML node value with XML::DOM::Lite and XML::Parser

From a quick look at the source of XML/DOM/Lite/Document.pm, I'd say you need

my $B = $doc->selectNodes("A/B")->[$cpt]->nodeValue(); my $D = $doc->selectNodes("A/C/D")->[$cpt]->nodeValue();

i.e. selectNodes returns an arrayref, not an object.

Other than that, you could make your loop look more "perly", by writing

if(defined($A_list)){ for my $cpt (0..$#$A_list) { ... } print "\n\n"; }

That said, wouldn't it be easier to just iterate over the arrays returned by selectNodes, and call ->nodeValue on each element, instead of selecting the elements by index from the (same) result list that you retrieve over and over again (the xpath query yields the same result on every iteration of the loop).