
Untitled
By: a guest on
Jul 6th, 2012 | syntax:
None | size: 1.46 KB | hits: 11 | expires: Never
Passing ref to XML::XPath object to a sub in Perl doesn't work as expected
use strict;
use XML::XPath;
# $xml is an xml string read from file
my $returnVal = mySubA($xml);
#... some more code ...
# sub definition
sub mySubA {
my ($xml) = @_;
my $xp = XML::XPath->new(xml => $xml);
my @fields = $xp->find('/elA/elB/elC')->get_nodelist;
# foreach elC, get desired info...
foreach my $field (@fields) {
$xp = XML:XPath->new(context => $field);
my $info1 = $xp->find('/info1')->string_value;
print "nINFO1: $info1";
my $info2 = $xp->find('/info2')->string_value;
}
# do some stuff....
return $returnVal;
}
use strict;
use XML::XPath;
# $xml is an xml string read from file
my $xp = XML::XPath->new(xml => $xml);
my $returnValA = mySubA($xp);
my $returnValB = mySubB($xp);
#... some more code ...
# sub definition
sub mySubA {
my ($xp) = @_;
my @fields = $xp->find('/elA/elB/elC')->get_nodelist;
# foreach elC, get desired info...
foreach my $field (@fields) {
$xp = XML:XPath->new(context => $field);
my $info1 = $xp->find('/info1')->string_value;
print "nINFO1: $info1";
my $info2 = $xp->find('/info2')->string_value;
}
# do some stuff...
return $returnVal;
}
sub mySubB {
my ($xp) = @_;
# do some stuff....
return $returnVal;
}
/elA/elB/elC/info1
$xp = XML:XPath->new(context => $field);
foreach my $field ( @fields ) {
my $info1 = $xp->find('/info1', $field);
print "nINFO1: $info1";
}