Jeff Pang wrote:
I didn't see you assign a value to %forecast but you can loop through it,why?


----- Original Message -----
From: Richard Lee To: Perl Beginners Subject: trying to parse out the simple xml file from the book with XML::Parser
 and I get not well-formed error
Date: 2008-11-3 09:48:05

use strict;

use warnings;



use XML::Parser;



my %forecast;

my @curr;

my $type;



my $p1 = new XML::Parser(Style => 'Stream');

my $yahoo = shift;

$p1->parsefile($yahoo);



print "Outlook: $forecast{outlook}\n";



foreach (keys %forecast) {

    next if /outlook/;

    print "$_: $forecast{$_}->{val} $forecast{$_}->{deg}\n";

}



-------------------------------------------------------------------
??????????????????????????????????????(http://space.sina.com.cn/ )
I am not sure if you got the entire code but after the loop through, there are more codes which when it encounters tags, it builds %forecast hash as below

sub StartTag {
my ($p, $tag) = @_;

push @curr, $tag;

if ($tag eq 'TEMPERATURE') {
$type = $_{TYPE};
$forecast{$type}->{deg} = $_{DEGREES};
}
}

sub EndTag {
pop @curr;
}

sub Text {
my ($p) = shift;

return unless /\S/;

s/^\s+//;
s/^\s+$//;

if ($curr[-1] eq 'OUTLOOK') {
$forecast{outlook} .= $_;
} elsif ( $curr[-1] eq 'TEMPERATURE' ) {
$forecast{$type}->{val} = $_;
}
}

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to