On 2007/04/02, at 15:14, Dave Adams wrote:
My script is having problems reading and XML file with only one
record in
it. When I add two or more records, there are no problems. The
error is
"Not and ARRAY reference.."
Here is the PROBLEM xml file (test.xml):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>
<RECORD>
<COLLNAME>FBIS2004</COLLNAME>
<DOCI>CP1</DOCI>
</RECORD>
</DATA>
Here is the WORKING xml file:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<DATA>
<RECORD>
<COLLNAME>FBIS2004</COLLNAME>
<DOCI>CP1</DOCI>
</RECORD>
<RECORD>
<COLLNAME>FBIS2005</COLLNAME>
<DOCI>CP2</DOCI>
</RECORD>
</DATA>
Here is my script:
#!/usr/bin/perl
use XML::Simple;
use Data::Dumper;
$xml = new XML::Simple (KeyAttr=>[]);
$data = $xml->XMLin("test.xml");
#print Dumper($data);
print "There are " . scalar(@{$data->{RECORD}}) . " records.\n";
foreach my $var (@{$data->{RECORD}})
{
print $var->{DOCI} . "\n";
print $var->{COLLNAME} . "\n";
}
Does anyone have an explaination for this?
That occurs because $var->{$RECORD} is a hashref instead of arrayref. The code below should do what you want.
<code> $xml = new XML::Simple( KeyAttr => [], ForceArray => [qw/RECORD/] ); </code> -- Igor Sutton [EMAIL PROTECTED]
PGP.sig
Description: This is a digitally signed message part
