http://www.perlmonks.org?node_id=1002687

mascip has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,
I want to get rid of the <opt> node, created with XMLout().

Let me illustrate this. I want to create a piece of XML that looks like this :

<book_1>title_1</book1> <book_2>title_2</book1>
And with this piece of code :
use XML::Simple; my %xml_hash = ( book1 => ['bla'], book2 => ['bli'], ); my $xml = XMLout(\%xml_hash, KeyAttr => []); print $xml;
i get this XML structure instead :
<opt> <book_1>title_1</book1> <book_2>title_2</book1> </opt>
I don't want this <opt> node, is there any way to not create it, with XMLout()?

Replies are listed 'Best First'.
Re: Very simple XML::Simple problem
by jacaril (Beadle) on Nov 07, 2012 at 16:25 UTC

    opts is the default root name, setting RootName to undefined should solve your issue.

    my $xml = XMLout(\%xml_hash,  RootName   => undef);
Re: Very simple XML::Simple problem
by roboticus (Chancellor) on Nov 07, 2012 at 16:31 UTC

    mascip:

    The docs for XML::Simple mention that you can control the root element with the RootName option. Setting it to undef or the empty string should make it leave off the root elements. Using another value should change the name "opt" to the specified name.

    Caveat: I've not played with it, I'm just spouting off info from the docs.

    ...roboticus

    When your only tool is a hammer, all problems look like your thumb.

      I skipped this part of the doc apparently. Thanks a lot to you two !