Bonjour,
J'ai un souci lors du parcours de mon fichier XML avec XML::Simple.
En effet, certaines balises semblent ignorées.
Voivi un cas :
<?xml version="1.0" encoding="ISO-8859-1"?>
<LISTFILES SUBJECT="MACHINES">
<MACHINE SUBJECT="eul0800232">
<REP SUBJECT="/LOG/eul0800232/home/sisteer/PROVISIONING/OUT">
<FICHIER SUBJECT="EXPORT_0631819146.LOG.1">
<ARCHIVE></ARCHIVE>
<DATEFILE>2005-12-28</DATEFILE>
</FICHIER>
<FICHIER SUBJECT="EXPORT_0671070531.LOG.1">
<ARCHIVE></ARCHIVE>
<DATEFILE>2005-12-23</DATEFILE>
</FICHIER>
<FICHIER SUBJECT="EXPORT_0631818726.LOG.1">
<ARCHIVE></ARCHIVE>
<DATEFILE>2005-12-22</DATEFILE>
</FICHIER>
</REP>
</MACHINE>
<MACHINE SUBJECT="eul0800226">
<REP SUBJECT="/LOG/eul0800232/home/sisteer/PROVISIONING/OUT">
<FICHIER SUBJECT="EXPORT_0631819146.LOG.2">
<ARCHIVE></ARCHIVE>
<DATEFILE>2005-12-28</DATEFILE>
</FICHIER>
<FICHIER SUBJECT="EXPORT_0671070531.LOG.2">
<ARCHIVE></ARCHIVE>
<DATEFILE>2005-12-23</DATEFILE>
</FICHIER>
<FICHIER SUBJECT="EXPORT_0631818726.LOG.2">
<ARCHIVE></ARCHIVE>
<DATEFILE>2005-12-22</DATEFILE>
</FICHIER>
</REP>
</MACHINE>
</LISTFILES>
Dans cet arbre, la balise <REP> est unique à l'intérieur de la balise <MACHINE>; du coup le parseur me dit lorsqu'il rencontre cette balise: "Not an ARRAY reference at ./xml2php.pl line 32"
Voici mon script :
#!/usr/bin/perl
use XML::Simple;
use Data::Dumper;
$xml = new XML::Simple;
my $machine;
foreach $machine (@{$data->{MACHINE}})
{
my $repertoire;
print "MACHINE = ".$machine->{SUBJECT}."\n";
foreach $repertoire (@{$machine->{REP}})
{
my $fichier;
print "REPERTOIRE = ".$repertoire->{SUBJECT}."\n";
foreach $fichier (@{$repertoire->{FICHIER}})
{
print "FICHIER = ".$fichier->{SUBJECT}."\n";
}
}
}