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

Greetings, I am trying to load up move XML variable and 'attribute' to another XML file. However, I am having trouble using XML::Bare. Here is the source.xml that I want to move.
<vars> <field name="loc" val="{$loc}" type="static" /> <field name="fullURL" val="http://www.dasite.com" type="static" /> <field name="locinfo" val="{$location=~ tr/a-z/A-Z/;}" type="stati +c" /> </vars>
Here is the part of code that I am having problem with. ex) moving.pl
use XML::Bare qw/xget xval forcearray/; . . . . my $fields = XML::Bare::forcearray( $config->{'field'} ); $ob->add_node($rxml, 'vars', $fields); . . . .
In result from destination.xml
<multi_vars /> <vars> <ARRAY(0xeea3ac0) /> </vars>
I want the result to be....
<multi_vars /> <vars> <loc /> <fullURL /> <locinfo /> </vars>
In which loc, fullURL, locinfo contains value from source.XML Please recommand me a useable XML base, I was thinking somehow I can pass $fields variable in string format.......

Replies are listed 'Best First'.
Re: XML Adding Node Problem.
by roboticus (Chancellor) on Oct 23, 2012 at 21:12 UTC

    huchister:

    It appears that the reason you're getting <ARRAY(0xeea3ac0)> in there is because you're handing an array of nodes to a function that expects to add a single node to the XML tree. Perhaps it might work if you add them one at a time--maybe like this:

    $ob->add_node($rxml, 'vars', $_) for @$fields;

    Caveat: I've never used XML::Bare, so I may have misdiagnosed or some such.

    ...roboticus

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