Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
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 examining the Monastery: (5)
As of 2014-10-02 03:06 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (45 votes), past polls