http://qs321.pair.com?node_id=815122


in reply to Accessing attributes in XML::Simple

Hi,

You can do in XML Simple itself by passing KeyAttr => 1. Hope using for loop you can take the value of id.

#!/usr/bin/perl use strict; use warnings; use XML::Simple; use Data::Dumper; my $xml_simple = XML::Simple->new( KeepRoot => 1, KeyAttr => 1, For +ceArray => 1 ); my $response_hash = eval{ $xml_simple->XMLin( "cars.xml" ) }; print Dumper($response_hash); Output : $VAR1 = { 'root' => [ { 'unsold' => [ { 'car' => [ { 'model' => [ 'Hyundai' ], 'mileage' => [ '20000' ] }, { 'model' => [ 'Jeep' ], 'mileage' => [ '10000' ] } ] } ], 'footnotes' => [ { 'footnote' => [ { 'content' => 'F +1 text', 'id' => 'F1' }, { 'content' => 'F +2 text', 'id' => 'F2' } ] } ] } ] };

Replies are listed 'Best First'.
Re^2: Accessing attributes in XML::Simple
by ikegami (Patriarch) on Dec 31, 2009 at 20:39 UTC

    KeyAttr => 1 is wrong. The value should be an array ref or a hash ref. In this case, you want KeyAttr => []

    ForceArray => 1 is overkill. ForceArray => [qw( car footnote )] would be more appropriate

      You are right ikegami. If array ref i totally agree to you.

      Thanks,

      Gubs