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

Re^3: parse xml and store data in array of hashesh

by Anonymous Monk
on Jul 23, 2011 at 08:44 UTC ( #916293=note: print w/ replies, xml ) Need Help??


in reply to Re^2: parse xml and store data in array of hashesh
in thread parse xml and store data in array of hashesh

Hi, you're welcome :)

You made it very easy as your question was very effective (How do I post a question effectively? , How do I compose an effective node title?).

Here is a similar approach using XML::Twig

#!/usr/bin/perl -- #~ 2011-07-23-08:42:20+0000 by Anonymous Monk #~ perltidy -csc -otr -opr -ce -nibc -i=4 use strict; use warnings; use autodie; # dies if open/close... fail use Data::Dumper; use XML::Twig; Main( @ARGV ); exit( 0 ); sub Main { Demo(); } sub NotDemoMeaningfulName { my ($xml) = @_; my @data; my %site; my $t = XML::Twig->new( twig_handlers => { '//Site' => sub { warn $_->path; push @data, {%site} if %site; %site = (); $_->purge; # free memory }, '//Site/Id' => sub { warn $_->path; $site{Id} = $_->trimmed_text; }, '//Site/Title' => sub { warn $_->path; $site{Title} = $_->trimmed_text; }, }, ); $t->xparse($xml); $t->purge; return \@data; } ## end sub NotDemoMeaningfulName sub Demo { my $ref = NotDemoMeaningfulName( DemoData() ); print Dumper($ref); } sub DemoData { #~ http://perlmonks.com/?abspart=1;displaytype=displaycode;node_id=916 +054;part=1 my $xml = <<'__XML__'; <Catalog> <Category> <Name>Arts &amp; Entertainment</Name> <Site> <Id>01-id...</Id> <Title>01-title...</Title> </Site> <Site> <Id>02-id...</Id> <Title>02-title...</Title> </Site> </Category> </Catalog> __XML__ return $xml; } ## end sub DemoData __END__ $ perl xml.twig.916054.pl /Catalog/Category/Site/Id at xml.twig.916054.pl line 30. /Catalog/Category/Site/Title at xml.twig.916054.pl line 34. /Catalog/Category/Site at xml.twig.916054.pl line 24. /Catalog/Category/Site/Id at xml.twig.916054.pl line 30. /Catalog/Category/Site/Title at xml.twig.916054.pl line 34. /Catalog/Category/Site at xml.twig.916054.pl line 24. $VAR1 = [ { 'Id' => '01-id...', 'Title' => '01-title...' }, { 'Id' => '02-id...', 'Title' => '02-title...' } ];


Comment on Re^3: parse xml and store data in array of hashesh
Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2015-07-28 02:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (251 votes), past polls