Frage

Also habe ich ein Perl geschrieben, das die von der zurückgegebenen Ergebnisse analysiert Amazon Web Services.Ich verwende das XML::Simple Paket.Im Großen und Ganzen funktionierte alles, als ich ein Element herauszog.Das Problem, auf das ich stieß, war jedoch, dass ein Element auch ein Attribut hatte.Dann erhalte ich die Fehlermeldung, dass es sich bei dem Element um einen Hash handelt.

Folgendes habe ich getan, wenn ich die Laufzeit einer DVD erhalten wollte:Ich habe gerade einen Artikel erstellt, der die spezifischen Informationen für diesen einmaligen Artikel enthält.

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

Gibt es eine Möglichkeit, von einem Element aus auf Elemente und Attribute zuzugreifen?

War es hilfreich?

Lösung

$item ist ein Hashref, der so aussieht:

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

Daher können Sie die Laufzeit wie folgt ermitteln:

$RunningTime = $item->{RunningTime}->{content}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top