XML::Simple
lacks consistency because it's up to the user to enable strict mode, so graphics
node is sometimes hash, sometimes array depending on number of child elements.
for my $entry ( keys %{$data->{entry}} ) {
my $graphics = $data->{entry}{$entry}{graphics};
$graphics = [ $graphics ] if ref $graphics eq "HASH";
print "$_->{type}\n" for @$graphics;
}
There are better modules for XML parsing, please check XML::LibXML
or as @RobEarl suggested use ForceArray
parameter:
XMLin("file.xml",KeyAttr => ['id'], ForceArray => [ 'graphics' ]);