Richard Lee wrote:
> while trying to study the article on perlmonks.org,
> 
> http://perlmonks.org/?node_id=490846
> 
> regarding XML parsing, I need bit of clarfication.
> 
> how do I parse out
> 
> <image src="http://www.oreilly.com/catalog/covers/perlbp.s.gif";
>              width="145" height="190" /> 
> 
> 
> I tried $book->{image}->{src}... but doesn't work.. I need some 
> understanding on how these information is stored.
> 
> 
> 
> parsing code
> 
>   use XML::Simple qw(:strict);
> 
>   my $library  = XMLin($filename,
>     ForceArray => 1,
>     KeyAttr    => {},
>   );
> 
>   foreach my $book (@{$library->{book}}) {
>     print $book->{title}->[0], "\n" 
> 
>   }
> 
> XML file
> 
> <library>
>     <book>
>       <title>Perl Best Practices</title>
>       <author>Damian Conway</author>
>       <isbn>0596001738</isbn>
>       <pages>542</pages>
>       <image src="http://www.oreilly.com/catalog/covers/perlbp.s.gif";
>              width="145" height="190" />
>     </book>
>     <book>
>       <title>Perl Cookbook, Second Edition</title>
>       <author>Tom Christiansen</author>
>       <author>Nathan Torkington</author>
>       <isbn>0596003137</isbn>
>       <pages>964</pages>
>       <image src="http://www.oreilly.com/catalog/covers/perlckbk2.s.gi
> +f"
>              width="145" height="190" />
>     </book>
>     <book>
>       <title>Guitar for Dummies</title>
>       <author>Mark Phillips</author>
>       <author>John Chappell</author>
>       <isbn>076455106X</isbn>
>       <pages>392</pages>
>       <image src="http://media.wiley.com/product_data/coverImage/6X/07
> +645510/076455106X.jpg"
>              width="100" height="125" />
>     </book>
>   </library>

I agree with Stewart that XML::Simple is far from simple in practice. For the
selection of options for XMLin you have used, you can access the image data like
this:

foreach my $book (@{$library->{book}}) {
  my $title = $book->{title}[0];
  my $image = $book->{image}[0];
  print "$title\n";
  print "  $image->{src}\n";
  print "  $image->{width}\n";
  print "  $image->{height}\n";
}

but the structure of the data will change depending on what options are set, and
in general it is very difficult to use XML::Simple without also using
Data::Dumper to inspect the data structure that has actually been generated.

HTH,

Rob

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to