in reply to Re^2: perl xml and array issue
in thread perl xml and array issue
I don't understand the question.
If you use ForceArray => [qw( product color )],
foreach $products (@{$file->{product}}) { print "Widget: " . $products->{title} ." \n"; print "Rating: " . $products->{rating} . "\n"; print " Cost: " . $products->{cost} . "\n"; print "Colors: " . join(', ', @{$products->{color}})."\n\n"; }
will work for
<shelf> <product> <title>widget3</title> <cost>0.50</cost> <rating>S</rating> <color>white</color> </product> </shelf>
and
<shelf> <product> <title>widget1</title> <cost>0.10</cost> <rating>B</rating> <color>red</color> <color>blue</color> <color>green</color> </product> <product> <title>widget2</title> <cost>0.25</cost> <rating>S</rating> <color>pink</color> <color>gray</color> <color>orange</color> </product> </shelf>
and everything in between. Without ForceArray, you'd need
sub list { if (defined(ref($_[0])) && ref($_[0]) eq 'ARRAY') { return @{ $_[0] }; } else { return $_[0]; } } foreach $products (list($file->{product})) { print "Widget: " . $products->{title} ." \n"; print "Rating: " . $products->{rating} . "\n"; print " Cost: " . $products->{cost} . "\n"; print "Colors: " . join(', ', list($products->{color}))."\n\n"; }
So what's the problem?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: perl xml and array issue
by dezboi (Initiate) on Nov 18, 2010 at 22:14 UTC | |
by ikegami (Patriarch) on Nov 18, 2010 at 22:41 UTC |