Try using keeproot (if you aren't):

Example:
my $xml_obj = XML::Simple->new(Keeproot => 1);
With Keeproot:
#!/usr/bin/perl use strict; use XML::Simple; use Data::Dumper; my $xml_obj = XML::Simple->new(Keeproot => 1, ForceArray => ['campaign +']); # xml my $xml = $xml_obj->XMLin('test.xml'); print Dumper($xml); my $out = $xml_obj->XMLout($xml); print Dumper($out); exit; ---------------------------------------------------------- $VAR1 = { 'campaign' => [ { 'menuid' => '10118-2', 'action' => '0', 'phonenumbers' => { 'phonenumber' => { 'number' +=> '4167781583', 'prompts' + => { + 'prompt' => { + 'tts' => 'Hello, this is a test.', + 'promptid' => '2' + } + }, 'callid' +=> '1234abc' } } } ] }; $VAR1 = '<campaign action="0" menuid="10118-2"> <phonenumbers name="phonenumber" callid="1234abc" number="4167781583 +"> <prompts name="prompt" promptid="2" tts="Hello, this is a test." / +> </phonenumbers> </campaign> ';

Without keeproot:
#!/usr/bin/perl use strict; use XML::Simple; use Data::Dumper; my $xml_obj = XML::Simple->new(ForceArray => ['campaign']); # xml my $xml = $xml_obj->XMLin('test.xml'); print Dumper($xml); my $out = $xml_obj->XMLout($xml); print Dumper($out); exit; ------------------------------------------------------ $VAR1 = { 'menuid' => '10118-2', 'action' => '0', 'phonenumbers' => { 'phonenumber' => { 'number' => '4167781583', 'prompts' => { 'prompt' => +{ +'tts' => 'Hello, this is a test.', +'promptid' => '2' } }, 'callid' => '1234abc' } } }; $VAR1 = '<opt action="0" menuid="10118-2"> <phonenumbers name="phonenumber" callid="1234abc" number="4167781583 +"> <prompts name="prompt" promptid="2" tts="Hello, this is a test." / +> </phonenumbers> </opt> ';

In reply to Re: XML::Simple is doing too much for me! Help please. by shiza
in thread XML::Simple is doing too much for me! Help please. by jdtoronto

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":