Tuesday, December 28, 2010

XML::XPath in Perl

use strict;
use warnings;
use XML::XPath;

my $xpath = "//bookstore";
#my $xpath = "//book[last()]/price";
#my $xpath = "//book[price>35.00]";
#my $xpath = "//title|//price";

my $xml = <<'XMLDOC';
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>
XMLDOC

my $result = '';
my $xp = XML::XPath->new(xml => $xml);
for my $node ($xp->findnodes( $xpath )->get_nodelist) {
    $result .= $node->getName . ": " . $node->string_value;
}
$result =~ s/^\s*$//gm;
print $result;

No comments: