Итак, я написал некоторый Perl, который будет анализировать результаты, возвращаемые Веб-сервисы Amazon. Я использую пакет XML::Simple. По большей части все работало, когда я вытаскивал элемент. Однако проблема, с которой я столкнулся, заключалась в том, что у элемента также был атрибут. Затем я получаю сообщение об ошибке, что элемент является хешем.
Вот что я сделал, если хотел узнать время воспроизведения DVD: я просто создал элемент, содержащий конкретную информацию для этого одноразового элемента.
// 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};
}
Есть ли способ получить доступ к элементам и атрибутам из одного элемента?





$item - это хэш-ссылка, которая выглядит так:
$item = {
'RunningTime' => {'content' => '90', 'Units' => 'minutes'},
'ProductGroup' => 'DVD'
};
Таким образом, вы можете получить время работы следующим образом:
$RunningTime = $item->{RunningTime}->{content}