fhew has asked for the wisdom of the Perl Monks concerning the following question:
I've been using XML::Simple for some very simple XML and until yesterday it was working the way I expected... till I got bitten with the following example:
use XML::Simple; use Data::Dumper; my $x =<<EOF; <stuff name="me"> <obj class="myclass"> <set name="key1">a</set> <set name="key2"></set> </obj> <obj class="myclass"> <set name="key1">a</set> <set name="key2">b</set> </obj> </stuff> EOF $x = XMLin( $x, #SuppressEmpty => '', ForceArray => 1, ContentKey => '-content', ); print Dumper(\$x); $VAR1 = \{ 'obj' => [ { 'class' => 'myclass', 'set' => { 'key2' => {}, 'key1' => { 'content' => 'a' } } }, { 'class' => 'myclass', 'set' => { 'key2' => 'b', 'key1' => 'a' } } ], 'name' => 'me' };
Here I've provided two 'objects', one object has an element that has an empty or value is blank. As a result the hash that's returned is formatted differently than when _all_ attributes are provided. What I expected was the latter like:
'key2' => 'b', 'key1' => 'a'
but where there is an 'empty' attribute everything changes to a hash (and with the 'content' sub-element). That's what I thought the ForceArray and ContentKey was supposed to suppress; and the ContentKey does do it!... but only when all fields are populated.
I thought SuppressEmpty would do it, but it doesn't.
What am I missing?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: XML::Simple isn't listening to SuppressEmpty
by zwon (Abbot) on May 02, 2012 at 17:14 UTC | |
|
Re: XML::Simple isn't listening to SuppressEmpty
by Khen1950fx (Canon) on May 03, 2012 at 01:14 UTC | |
|
Re: XML::Simple isn't listening to SuppressEmpty
by grantm (Parson) on May 03, 2012 at 21:12 UTC | |
|
Re: XML::Simple isn't listening to SuppressEmpty
by Anonymous Monk on May 03, 2012 at 03:38 UTC | |
|
Re: XML::Simple isn't listening to SuppressEmpty
by fhew (Beadle) on May 08, 2012 at 15:38 UTC | |
by Anonymous Monk on May 08, 2012 at 15:55 UTC |