2008-08-27 11 views
3

J'ai donc écrit quelques perl qui analyseraient les résultats renvoyés par le Amazon Web Services. J'utilise le package XML::Simple. Pour la plupart, tout a fonctionné quand j'ai sorti un élément. Cependant, le problème que j'ai rencontré était quand un élément avait aussi un attribut. Ensuite, je reçois une erreur que l'élément est un hachage.Analyse des éléments et des attributs XML avec Perl

Voici ce que j'ai fait si je voulais obtenir le temps d'exécution d'un DVD: Je viens de créer un élément pour contenir les informations spécifiques à cet élément unique.

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

Y a-t-il un moyen d'accéder à la fois aux éléments et aux attributs d'un élément?

Répondre

5

$item est un hashref qui ressemble à ceci:

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

vous pouvez donc obtenir le temps d'exécution comme ceci:

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