2008-08-27 4 views
3

그래서 Amazon Web Services에서 반환 된 결과를 구문 분석 할 일부 펄을 작성했습니다. XML::Simple 패키지를 사용하고 있습니다. 대부분의 경우, 요소를 꺼낼 때 모든 것이 작동했습니다. 그러나, 내가 만난 문제는 엘리먼트가 속성을 가지고있을 때였 다. 그런 다음 항목이 해시라는 오류가 발생합니다.Perl로 XML 요소 및 속성 구문 분석

다음은 DVD의 실행 시간을 얻으려고 한 경우의 작업입니다. 방금이 일회용 항목에 대한 특정 정보를 저장할 항목을 만들었습니다.

// XML 
<ProductGroup>DVD</ProductGroup> 
<RunningTime Units="minutes">90</RunningTime> 

// Perl to parse XML 

my $item = $xml->XMLin($content, KeyAttr => { Item => 'ASIN'}, ForceArray => ['ASIN']);  

$ProductGroup = $item->{Items}->{Item}->{ItemAttributes}->{ProductGroup}; 

if(ref($item->{Items}->{Item}->{ItemAttributes}->{RunningTime}) eq 'HASH'){ 
    $RunningTimeXML = $xml->XMLin($content, KeyAttr => { Item => 'ASIN'}, NoAttr => 1); 
    $RunningTime = $RunningTimeXML->{Items}->{Item}->{ItemAttributes}->{RunningTime}; 
} 

하나의 항목에서 요소와 속성을 모두 액세스 할 수있는 방법이 있습니까?

$item = { 
    'RunningTime' => {'content' => '90', 'Units' => 'minutes'}, 
    'ProductGroup' => 'DVD' 
}; 

따라서이 같은 실행 시간을 얻을 수 있습니다 :

$RunningTime = $item->{RunningTime}->{content} 

답변

5

$item

이처럼 보이는 hashref입니다