Question

J'ai donc écrit du Perl qui analyserait les résultats renvoyés par le Services Web Amazon.J'utilise le XML::Simple emballer.Pour la plupart, tout a fonctionné lorsque j'ai retiré un élément.Cependant, le problème que j'ai rencontré était lorsqu'un élément avait également un attribut.Ensuite, j'obtiens une erreur indiquant que l'élément est un hachage.

Voici ce que j'ai fait si je voulais obtenir la durée 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};
}

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

Était-ce utile?

La solution

$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}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top