How can I parse/extract a list of values from an XML file with well nested values?
I have tried XML Simple and I am only able to extract the first value from a list of over 10 values. I am trying to first select seriesName "Temperature" and extract the values under that group.
This is the XML file I am parsing T124.xml (I HAVE MADE THIS A DIGESTED AS ITS A HUGE FILE):
<chart caption="" subcaption="" palette="6" yAxisMinVal="11800" yAxisMaxVal=17800"xmlns="http: ">
<categories>
<category label=""/>
<category label=""/>
<category label=""/>
<category label=""/>
<category label=""/>
<category label="6"/>
<category label=""/>
<category label=""/>
<category label=""/>
<category label=""/>
<category label="12"/>
<category label=""/>
<category label=""/>
<category label="18"/>
<category label=""/>
<category label=""/>
<category label="21"/>
<category label=""/>
</categories>
- <dataset seriesName="Temperature" color="003366">
<Set value=675.0"/>
<Set value=613.0"/>
<Set value=612.0"/>
<Set value=614.0"/>
<Set value=613.0"/>
<Set value=413.0"/>
<Set value=613.0"/>
<Set value=313.0"/>
<Set value=213.0"/>
<Set value=653.0"/>
<Set value=633.0"/>
<Set value=623.0"/>
</dataset>
<dataset seriesName="Precipitation" color="66CC33">
<set value="50.6"/>
</dataset>
</chart>
Here is the Perl code I used:
#!/usr/bin/perl
use strict;
use XML::Simple 'XMLin';
use Data::Dumper;
my $parse = XMLin('T124.xml',forcearray => ['value']);
#print Dumper($parse);
foreach my $dataset (@{$parse->{dataset}}) {
if ($dataset->{seriesName} eq 'Temperature') {
print $dataset->{seriesName} . "\n";
print $dataset->{set}->[0]->{value} . "\n";
}
}
I would like to see the following output (shown below), however I am only able to extract the first 675.0 value ONLY:
Temperature
675.0
613.0
612.0
614.0
613.0
ETC...