parseurs XML avec du perl
Re-bonjour à tous et à toutes,
Je reviens vers vous car je me heurte à un problème concernant l'utilisation des parseurs pour lire un XML en Perl.
Je me suis inspiré (pour ne pas dire autre chose) du tuto réalisé par Djibril et Nicolas.
Voici mon problème j'ai un fichier XML que je souhaite décortiquer avec du perl afin de récupérer des valeurs...
Voici le XML vue avec Dumper
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $VAR1 = {
'queues' => {
'queue' => {
'feed' => {
'atom' => 'valeur1',
'rss' => 'valeur2'
},
'stats' => {
'consumerCount' => 'nombre1',
'dequeueCount' => 'nombre2',
'enqueueCount' => 'nombre3',
'size' => '0'
},
'name' => 'INCOMING_1'
}
}
}; |
Voici le code perl
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| =#!/usr/bin/perl -w
use strict;
use Switch;
use warnings;
use LWP::Simple;
use XML::Simple;
my $parser = XML::Simple->new( KeepRoot => 1 );
my $file_in="filein.xml";
getstore("@ de l'xml",$file_in);
my (%args, %queues);
my %error=('ok'=>0,'warning'=>1,'critical'=>2,'unknown'=>3);
my ($warninglevel, $criticallevel, $tmp, $evalcount, $switch, $queueselect, $queuevalue);
my $key = my $value = my $i = my $k = 0;
my $exitcode = "unknown";
# Creation du fichier resultat
my $FichierResulat = 'resultat.txt';
open( my $FhResultat, '>', $FichierResulat )
or die("Impossible d'ouvrir le fichier $FichierResulat\n$!");
my $doc = $parser->XMLin($file_in);
use Data::Dumper;
print Dumper $doc;
#tout le fichier XML est dans $doc sous forme d'arbre
foreach my $valeur ( @{ $doc->{queues}->{queue}} ) {
print {$FhResultat} 'Queue valeur : ';
print {$FhResultat} $valeur->{name};
print {$FhResultat} "\t";
print {$FhResultat} 'Size : ';
print {$FhResultat} $valeur->{stats}->{size};
print {$FhResultat} 'DequeueCount : ';
print {$FhResultat} $valeur->{stats}->{dequeuecount};
}
# Fermeture du fichier
close($FhResultat); |
Lorsque je lance le script je me retrouve avec un jolie "Not an ARRAY reference at monscript.pl line 42."
Impossible de trouver le pk du comment...
Si vous avez une piste messieurs (dames) je suis preneur..
En vous remerciant.
Christophe