4

そこで、 Amazon Web Servicesから返された結果を解析する perl を書きました。XML::Simpleパッケージを使用しています。ほとんどの場合、要素を引き出すとすべてが機能しました。しかし、私が遭遇した問題は、要素にも属性がある場合でした。次に、アイテムがハッシュであるというエラーが表示されます。

DVD の実行時間を取得したい場合は、次のようにします。この 1 回限りのアイテムの特定の情報を保持するアイテムを作成しました。

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

1 つのアイテムから要素と属性の両方にアクセスする方法はありますか?

4

1 に答える 1

6

$item次のようなハッシュリファレンスです。

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

したがって、次のように実行時間を取得できます。

$RunningTime = $item->{RunningTime}->{content}
于 2008-08-27T16:26:57.617 に答える