use strict;
use XML::XPath;
use XML::XPath::XMLParser;
my $xp = XML::XPath->new( xml => *DATA );
print 'There are ', $xp->find('queries/query')->size, " 'query' nodes.\n";
foreach my $element (qw/topN layer filter name datatype/) {
print "$element: ",
(
join ', ',
map { XML::XPath::XMLParser::as_string($_) =~ />([^<]*) }
$xp->find("queries/query/$element")->get_nodelist
),
"\n";
} ## end foreach my $element (qw/topN layer filter name datatype/)
__DATA__
topHosts 20
LINK 20
20
topHosts 20
topHosts 120
LINK 120
120
topHosts 120
####
There are 2 'query' nodes.
topN: 20, 120
layer: LINK 20, LINK 120
filter:
name: topHosts 20, topHosts 120
datatype: topHosts 20, topHosts 120