in reply to XML problems
The double quotes will stringify the array which completely removes the array structure. Also, I just noticed that you have a problem in the way your construct @waypoints:'Waypoint' => [ "@waypoints"],
You don't want double-quotes (or need single quotes) here either:push(@waypoints, "{'Longitude' => '$point[0]', 'Latitu +de' => '$point[1]', 'SequenceNumber' => '$count'}");
Combined with the not using stringification should get you pretty close to what you want.push(@waypoints, { Longitude => $point[0], Latitude => $point[1], SequenceNumber => $count } );
Update: Here's some code that seems to produce what you want:
use strict; use warnings; use XML::Simple; my $xml = new XML::Simple ( RootName => 'Task', XMLDecl => '<?xml version="1.0" encoding="UTF-8"?>', ); my @waypoints = ( { Long => 1, Lat => 2, SeqNo => 1 }, { Long => 3, Lat => 4, SeqNo => 2 }, ); my $waydata = { 'xmlns' => "http://Task.CUIntegration.com", 'xmlns:xsi' => "http://www.w3.org/2001/XMLSchema-instance", 'xsi:schemaLocation' => "http://Task.CUIntegration.com Task.xsd", 'ID' => ['ID'], 'Type' => ['Loop'], 'Destination' => ['Velocity'], 'Waypoint' => [ @waypoints ], }; print $xml->XMLout($waydata);
|
|---|