Analyser les éléments et attributs XML avec Perl
-
09-06-2019 - |
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 ?
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}