#!/usr/bin/perl -w
###########################################
# htmlparse - Parse XML with HTML::Parser
# Mike Schilli, 2005 (m@perlmeister.com)
###########################################
use strict;
use HTML::Parser;

my $p = HTML::Parser->new(
  api_version => 3,
  start_h  => [\&start, "tagname, attr"],
  text_h   => [\&text, "dtext" ],
  xml_mode => 1,
);

$p->parse_file("data.xml") or 
    die "Cannot parse";

my $serial;
my $artist;

###########################################
sub start {
###########################################
  my($tag, $attrs) = @_;

  if($tag eq "cd") {
      $serial = $attrs->{serial};
  }

  $artist = ($tag eq "artist");
}

###########################################
sub text {
###########################################
  my($text) = @_;

  if($artist and 
     $text eq "Foo Fighters") {
     print "$serial\n";
  }
}
