in reply to Re^2: XMLout and keys/attributes
in thread XMLout and keys/attributes

I am not using XMLin for anything.

Then I would ditch XMLout ASAP :) seriously

The way I use XML::Simple, is start with XML I want, then use XMLin to get data I want, then XMLout to get back xml I started with

If XMLin can't be made into data structure you want, then XMLout can't be made into xml you want

All that massaging of $userref you do is busywork :)

So with XML::Rules ( XML::Simple on steriods :) steroids) I might write

#!/usr/bin/perl -- use strict; use warnings; use XML::Rules; use Data::Dump qw/ dd /; my $wanted = <<'__XML__'; <?xml version="1.0" encoding="utf-8"?> <opt> <key0> <devices> <dev0> <param id="name">joe</param> <param id="type">user</param> </dev0> </devices> </key0> <key1> <devices> <dev0> <param id="name">mary</param> <param id="type">user</param> </dev0> </devices> </key1> </opt> __XML__ use XML::Rules; my $t = XML::Rules->new( qw/ stripspaces 8 /, rules => { 'dev0,devices,key0,key1,opt' => 'no content', 'param' => 'as array', }, ); my $XmlRef = $t->parse( $wanted ); dd $XmlRef; print $t->toXML( opt => $XmlRef->{opt}, undef, " ", ); __END__ { opt => { key0 => { devices => { dev0 => { param => [ { _content => "joe", id => "name" }, { _content => "user", id => "type" }, ], }, }, }, key1 => { devices => { dev0 => { param => [ { _content => "mary", id => "name" }, { _content => "user", id => "type" }, ], }, }, }, }, } <opt> <key0> <devices> <dev0> <param id="name">joe</param> <param id="type">user</param> </dev0> </devices> </key0> <key1> <devices> <dev0> <param id="name">mary</param> <param id="type">user</param> </dev0> </devices> </key1> </opt>

You still get to have a hairy hash, you still get your xml, and you don't spend days trying to make it "Simple"

Replies are listed 'Best First'.
Re^4: XMLout and keys/attributes
by atreyu (Sexton) on May 09, 2012 at 15:59 UTC
    Okay, that is very interesting, and it does give you more control, granted. but i want a more on-the-fly approach, which sauoq's solution grants me. i'm not saying you can't do that with XML::Rules of course (i'm sure you can), but his simple edit to my hashref manipulation was easy and ideal and I got to keep XML::Simple and its simple ways. thanks!