http://qs1969.pair.com?node_id=786844


in reply to Re: request for help on working with XML::Simple
in thread request for help on working with XML::Simple

Well .. I'm not getting any errors but I'm not getting any results either for that I'm afraid :(
  • Comment on Re^2: request for help on working with XML::Simple

Replies are listed 'Best First'.
Re^3: request for help on working with XML::Simple
by ig (Vicar) on Aug 07, 2009 at 20:19 UTC

    I find XML::Simple to be very simple if the XML is very simple, but with non-trivial XML I am often surprised by what it produces and, if I persist with it, end up spending a lot of time re-reading the documentation and studying Data::Dumper dumps.

    Here is an example which shows, step by step as I worked it out, how to access the source_name element...

    use strict; use warnings; use Data::Dumper; my $VAR1 = { 'sas_residue_annotation' => [ { 'xmlns' => 'http://www.ebi.ac.uk/WSsas/Schema', 'sources' => [ { 'source' => [ { 'source_name' => [ '1iho' ], 'ref_evalue' => [ '5.5e-50' ], 'ref_overlap' => [ '282' ], 'ref_identity' => [ '47.20' ], 'ref_pmid' => [ '11377204' ] }, { 'source_name' => [ '1mop' ], 'ref_evalue' => [ '8.3e-38' ], 'ref_overlap' => [ '264' ], 'ref_identity' => [ '43.60' ], 'ref_pmid' => [ '12717031' ] }, { 'source_name' => [ '1n2b' ], 'ref_evalue' => [ '8.2e-38' ], 'ref_overlap' => [ '264' ], 'ref_identity' => [ '43.60' ], 'ref_pmid' => [ '12717031' ] }, ], }, ], }, ], }; print Dumper($VAR1); print Dumper($VAR1->{sas_residue_annotation}); print Dumper($VAR1->{sas_residue_annotation}[0]); print Dumper($VAR1->{sas_residue_annotation}[0]{sources}); print Dumper($VAR1->{sas_residue_annotation}[0]{sources}[0]); print Dumper($VAR1->{sas_residue_annotation}[0]{sources}[0]{source}); foreach my $source (@{$VAR1->{sas_residue_annotation}[0]{sources}[0]{s +ource}}) { print "source name: ", join(',',@{$source->{source_name}}), "\n"; }

    Note that I wrote each successive print after studying the output of the previous one. It is a bit tedious, but for deeply nested structures I find it faster than trying to do it all in my head and then debugging my errors.