I find that
XML::Simple is very well suited to this sort of task. The following may fit your needs:
#!/usr/bin/perl -w
use strict;
use XML::Simple;
my $xml = << "EOF";
<?xml version="1.0" encoding="ISO-8859-1"?>
<monk value="PM">
<say>JAPH</say>
<vals>
<val val1="F" val2="value f">
</val>
<val val1="FO" val2="value fo">
</val>
<val val1="FOO" val2="value foo">
</val>
<val val1="FOOB" val2="value foob">
</val>
<val val1="FOOBA" val2="value fooba">
</val>
<val val1="FOOBAR" val2="value foobar">
</val>
</vals>
</monk>
EOF
my $xs = new XML::Simple;
my $xmlhref = $xs->XMLin($xml);
if ($xmlhref->{say}) {
print $xmlhref->{say} . "\n" if (grep { $_->{val1} eq 'FOO' } @{$xm
+lhref->{vals}->{val}});
}
Cheers,
Shendal