2008-08-27 18 views
3

Bu yüzden Amazon Web Services'dan döndürülen sonuçları ayrıştıracak bir perl yazdım. XML::Simple paketini kullanıyorum. Çoğunlukla, bir eleman çıkardığımda her şey çalıştı. Ancak, karşılaştığım problem, bir elementin de bir özelliği olduğu zaman oldu. Sonra öğenin bir karma olduğunu bir hata alıyorum.Perl ile XML Elements & Attributes Ayrıştırma

DVD için Çalıştırma Süresini almak istediğimde yaptığım şey şu: Bu tek seferlik öğe için belirli bilgileri tutmak için bir öğe oluşturdum.

// 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}; 
} 

Bir öğeye hem öğe hem de özniteliklere erişebilmemin bir yolu var mı?

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

nedenle böyle çalışma süresini alabilirsiniz:

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

cevap

5

$item

şöyle bir hashref olduğunu