Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re^2: XML::Simple design decisions

by Jenda (Abbot)
on Dec 29, 2007 at 00:53 UTC ( #659429=note: print w/replies, xml ) Need Help??

in reply to Re: XML::Simple design decisions
in thread XML::Simple

You could also use XML::Rules instead of XML::Simple as it gives you more detailed control over what data structure gets generated.

Something like:

use XML::Rules; # at least 0.22 (for the stripspaces) # see my $parser = XML::Rules->new( rules => [ Text => 'content', Entry => 'as array', Report => 'pass', Other => sub {return delete($_[1]->{name}) => $_[1]}, ], stripspaces => 3, ); my $data = $parser->parse(\*DATA); use Data::Dumper; print Dumper($data); __DATA__ <?xml version="1.0" encoding="UTF-8" standalone="no" ?> <Report address="Address" name="IM Report" productID="INTRFC-MGR01"> <Entry detail="4" name="e_im_dev_io_entry"> <Text>Device Handle: 2</Text> </Entry> <Entry detail="4" name="e_im_dev_io_entry"> <Text>Device Handle: 5</Text> </Entry> <Other detail="4" name="first"> <Text>Device Handle: 5</Text> </Other> <Other detail="4" name="second"> <Text>Device Handle: 5</Text> </Other> </Report>

It doesn't try to guess as XML::Simple does so it's more work though. (In not yet released 0.23 the rule for the Other tag will be just Other => 'by name',.)

Replies are listed 'Best First'.
Re^3: XML::Simple design decisions
by alw (Sexton) on Dec 29, 2007 at 03:33 UTC
    Thanks Jenda, that module works very well for me. One more point I would like to make. With XML::Simple and my xml file that I am working with, I can't use ForceArray => 'Entry' either for some reason; it hangs the script. I do not have that problem with XML::Rules.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://659429]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2021-11-28 20:10 GMT
Find Nodes?
    Voting Booth?

    No recent polls found