Вопрос

Поэтому я написал 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}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top