Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re: Extracting data from XML file

by mirod (Canon)
on Feb 23, 2010 at 10:41 UTC ( [id://824817]=note: print w/replies, xml ) Need Help??


in reply to Extracting data from XML file

Why do you want to get the result either in an array or in a scalar? Why not always get an array and always process it the same way? Why special case 1-element arrays?

Whichever you choose, XML::Simple can do it. If you want to always get an array use the ForceArray option, otherwise don't.

If you are only interested in the data in the State elements, then you can use a number of other modules, XML::LibXML, XML::Rules, or my XML::Twig.

Replies are listed 'Best First'.
Re^2: Extracting data from XML file
by derby (Abbot) on Feb 23, 2010 at 15:26 UTC

    ++ for always treating it as an array.

    #!/usr/local/bin/perl use strict; use warnings; use XML::LibXML; my $xml = <<_XML; <GEN_FSM> <State> <Name>POWERED</Name> <Comment>USB POWERED State</Comment> </State> <State> <Name>DEFAULT</Name> <Comment>USB DEFAULT State</Comment> </State> <State> <Name>ADDRESS</Name> <Comment>USB ADDRESS State</Comment> </State> <Rst_Arc> <To_State>DEFAULT</To_State> <monitor_mode_event_name>HOT_RST</monitor_mode_event_name> <monitor_mode_event_count>1</monitor_mode_event_count> <comment>HOT_reset_to_DEFAULT</comment> </Rst_Arc> </GEN_FSM> _XML my $parser = XML::LibXML->new(); my $doc = $parser->parse_string( $xml ); my $root = $doc->getDocumentElement; my @nodes = $root->findnodes( '/GEN_FSM/State/Name' ); foreach my $node ( @nodes ) { print $node->textContent, "\n"; }
    -derby

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2024-04-19 12:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found