http://qs1969.pair.com?node_id=441322


in reply to XML::Simple "transforming data"

XML::Simple's interface is pretty odd in that it outputs something different than it takes in by default. (Maybe it could be even a little more simple - and more Perlish...?) But there's an option:


ForceArray => 1 *# in - important*
    This option should be set to '1' to force nested elements to be
    represented as arrays even when there is only one.
...that you can use like so:

use XML::Simple; my $xml = XMLin(join('',<DATA>),ForceArray => 1); print XMLout($xml); __END__ <meta fpi="1234567890"> <isbn>1-234-56789-0</isbn> <edition>First</edition> <authorgroup> <author> <firstname>John</firstname> <surname>Smith</surname> <authorblurb url="http://www.someurl.com/etc/nothing.php"/> </author> </authorgroup> <pagenums>384</pagenums> <pubdate>October 2001</pubdate> <subjectset> <subject>some.lame.subject</subject> <subject>another.lame.subject</subject> </subjectset> <publisher> <publishername>Publisher Inc.</publishername> <imprintname>Publisher Inc.</imprintname> </publisher> </meta>

...I think that it outputs something very similar to what you're looking for...

hth