如何从具有良好嵌套值的 XML 文件中解析/提取值列表?
我尝试过 XML Simple,但我只能从 10 多个值的列表中提取第一个值。我试图首先选择 seriesName "Temperature" 并提取该组下的值。
这是我正在解析 T124.xml 的 XML 文件(我已将其消化为一个巨大的文件):
<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>
这是我使用的 Perl 代码:
#!/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";
}
}
我想看到以下输出(如下所示),但是我只能提取第一个 675.0 值:
Temperature
675.0
613.0
612.0
614.0
613.0
ETC...