잘 중첩 된 값으로 XML 파일에서 값 목록을 구문 분석/추출하려면 어떻게합니까?Perl을 사용하여 깊게 중첩 된 XML 파일에서 값 목록을 구문 분석/추출하는 방법
XML Simple을 사용해 본 결과, 10 개 이상의 값 목록에서 첫 번째 값만 추출 할 수있었습니다. 먼저 seriesName "Temperature"를 선택하고 해당 그룹 아래의 값을 추출하려고합니다.
: 여기<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>
내가 사용하는 펄 코드 :
이
내가 T124.xml를 분석하고있는 XML 파일입니다 (나는 그것의 큰 파일로 소화 이것을을 만들었습니다)#!/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 ...
는 ['XML :: Simple'] (https://metacpan.org/pod/XML::Simple)를 사용하지 마십시오 [* 오래된 *] (https://metacpan.org/pod/XML::Simple#STATUS-OF-THIS-MODULE). 대신 ['XML :: LibXML'] (https://metacpan.org/pod/XML::LibXML) 또는 ['XML :: Twig'] (https://metacpan.org/pod/XML::Twig)을 사용하십시오.) XPath를 사용하여 심층 노드에 액세스 할 수 있습니다. – Miller
소스에 온도 값이 표시되지 않습니까? 아니면 붙여 넣기에 문제가 있습니까? –
안녕하세요 짐, 소스 XML이 맨 위에 있습니다. 파일 ... 의 컨텍스트를 보여줍니다. –
BrianB