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


in reply to XML SOAP Response

Try adding this at the end of your program.

my @vehicles; foreach (@{$data->{Vehicles}->{Vehicle}}) { my %vehicle; $vehicle{vin}=$_->{vin}; foreach(@{$_->{VehicleAttributes}->{VehicleAttribute}}) { $vehicle{$_->{type}}=$_->{value}; } push(@vehicles,\%vehicle); } print Dumper(\@vehicles);

Updated: corrected several errors, now it works. You have to replace the initialization of $xml with

my $xml = new XML::Simple( ForceArray => ["Vehicle"]);

to force the "Vehicle" tag in your XML to became an array in the generated tree.

Rule One: "Do not act incautiously when confronting a little bald wrinkly smiling man."

Replies are listed 'Best First'.
Re^2: XML SOAP Response
by mitchismoney (Initiate) on Jul 31, 2008 at 17:46 UTC
    Adding the code changed the output to:
    $VAR1 = [];
    Is it a matter of double parsing the file? Or is this were XML::Twig comes in? I've only written some pretty basic Perl so bare with me as I try to learn/understand. I greatly appreciate it!

      Probably just a couple of typos:

      (1) print Dumper(\@vehicles); # plural (2) push(@vehicles,\%vehicle); # hashref (3) $vehicle{$_->{type}}=$_->{value}; # not veihcle

        Three typos in nine lines of code are a bit too many... so I debugged it and found two more errors.

        I said that it was untested, but I'm ashamed for putting so many errors in so little code.

        Rule One: "Do not act incautiously when confronting a little bald wrinkly smiling man."

Re^2: XML SOAP Response
by psini (Deacon) on Jul 31, 2008 at 17:49 UTC

    No, it's a matter of untested code too complex to work at first go. Give me five minutes and I'll try to debug it

    Rule One: "Do not act incautiously when confronting a little bald wrinkly smiling man."