Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2066 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  taille du tableau avec XML:Simple et option du module

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

taille du tableau avec XML:Simple et option du module

n°1455299
donny3
Posté le 11-10-2006 à 11:23:13  profilanswer
 

salut,
 
J'utilise le module XML::Simple et j'obtiens se resultat

Citation :

$VAR1 = {
          'table' => [
                     {
                       'nom' => 'pilote',
                       'champs' => {
                                   'prenom' => 'jina',
                                   'nom' => 'john',
                                   'intitule' => 'numpilote'
                                 }
                     },
                     {
                       'nom' => 'vol',
                       'champs' => {
                                   'intitule' => 'xx32',
                                   'ville' => 'paris'
                                 }
                     }
                   ]
        };


 
à partir de ce fichier xml

Citation :

<?xml version="1.0" encoding="windows-1250"?>
<base>
<table nom="pilote">  
 <champs intitule="numpilote" nom="john" prenom="jina">  
</champs>    
 </table>  
<table nom="vol">  
 <champs intitule="xx32" ville="paris">  
   
  </champs>
 </table>  
</base


 
j'aurai voulu faire une boucle pour obtenir le nom de chaque table mais comment faire pour avoir la taille du tableau  ??
 
je ne comprends pas lorsque j'essai d'utiliser les options du module (option qui figure sur cpan) ,que je lance mon script l'options n'est jamais reconnu
 
Par exemple j'utilise cette option

Code :
  1. $data = $xml->XMLin("./fg.xml",KeyAttr => "login" );


 
et quand je lance le script, j'ai cela

Citation :

Unrecognised option: KeyAttr at C:\Documents and Settings\v\Bureau\v\pars.pl line 11


 
et c'est pareil pour les autres option  :??:  
 
 
 
 
Merci


Message édité par donny3 le 11-10-2006 à 11:43:01
mood
Publicité
Posté le 11-10-2006 à 11:23:13  profilanswer
 

n°1455443
donny3
Posté le 11-10-2006 à 14:03:15  profilanswer
 

pour obtenir le nombre, j'ai essayer avec une boucle while

Code :
  1. while($a){
  2. print "i vaut >>>>>>><".$i."<<<<<<<<<<<<<";
  3. $i++;
  4. }


mais ma boucle tourne à l 'infini

n°1455515
donny3
Posté le 11-10-2006 à 15:12:26  profilanswer
 

pour les options est ce que cela peut venir de la version de mon module
j'ai fait cela et apparament il est à jour

Citation :


ppm> upgrade XML-Simple
XML-Simple 1.06: up to date.

n°1455557
Elmoricq
Modérateur
Posté le 11-10-2006 à 15:55:29  profilanswer
 

Tu as trois problèmes à gérer : les références, la gestion des types de base PERL (hâchages, tableaux, scalaires, ...), et l'imbrication de tout ça.
 
Tout d'abord, de la documentation :
Types de base : http://perldoc.perl.org/perldata.html
Références : http://perldoc.perl.org/perlref.html
 
Je vais ensuite expliquer pour ton cas précis, mais tu devrais lire ces deux pages, en entier, et souvent t'y référer. J'y ai moi aussi recours, souvent, parce que ce n'est parfois pas intuitif.
 
Quoiqu'il en soit, ta variable $VAR1 est une référence de hâchage de tableau de hâchages.
Si, si.
 
Tout d'abord, pour accéder à quoique ce soit dans tes références, tu vas devoir déréférencer en indiquant le type.
 
Par exemple, pour accéder à la liste des clefs de hâchage contenus dans $VAR1 :

print "$_\n" foreach keys %{ $VAR1 };


Ici, par l'utilisation de la syntaxe "%{ }", j'ai indiqué à l'interpréteur PERL que $VAR1 était une référence de hâchage.
J'ai obtenu "table" en réponse, parce que c'est la seule clef contenue dans ce hâchage.
 
 
Ensuite, pour connaître le nombre d'éléments contenus dans le tableau pointé par la clef de hâchage "table" :

print "Nombre d'éléments de la section 'table' : ", scalar(@{ $VAR1->{table} }), "\n";


Là, j'ai accédé au contenu de ma clef de hâchage en déréférençant $VAR1 vers la clef "table".
 
J'ai ensuite déréférencé mon résultat, avec @{}, pour indiquer qu'il s'agit d'une référence de tableau.
Et, puisque tu as lu le premier lien que j'ai posté, tu sais qu'un tableau en contexte scalaire retourne le nombre d'éléments qu'il contient, j'ai donc forcé le contexte avec scalar().
 
Enfin, pour exemple, je vais imprimer la liste des clefs de hâchage contenu en première position du tableau obtenu :

print "Clefs du premier élément du tableau : \n";
print "$_\n" foreach keys %{ @{ $VAR1->{table} }[0] };


 
 
Voila, en très rapide, ce que ça donne.
Mais comme tu peux le voir, il vaut mieux maîtriser les principes de base du langage avant de se lancer dans ce genre de gymnastique. Je ne saurais donc trop te conseiller de zoner à fond le site http://perldoc.perl.org , et d'y revenir souvent y chercher la documentation nécessaire.

n°1455569
anapajari
s/travail/glanding on hfr/gs;
Posté le 11-10-2006 à 16:09:49  profilanswer
 

A propos des références [edit]et des nested structures d'ailleurs[/edit] si un jour tu tombes sur le livre advanced perl programming, tout à la fin tu as un excellent chapitre "Syntax summary" qui résume tout ça de manière très claire.


Message édité par anapajari le 11-10-2006 à 16:10:28
n°1455576
donny3
Posté le 11-10-2006 à 16:21:22  profilanswer
 

.


Message édité par donny3 le 11-10-2006 à 16:28:44

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  taille du tableau avec XML:Simple et option du module

 

Sujets relatifs
Mise en tableau d'une tableRécuperer la taille d'un fichier qui se trouve sur un serveur ftp
Quelle est la taille maximum d'une JSP ?Probleme de taille de police avec Mozilla firefox
[C#] StreamReader, XML, et jeton inattendu, kesak ?Problème d'image dans une case de tableau sous IE
[Php] Un tableau administrateur compliqué[vb.net] access a un tableau a l'interrieur d'une structure
Créer une frame dans une cellule de tableau[Resolu] Requete tableau croisé
Plus de sujets relatifs à : taille du tableau avec XML:Simple et option du module


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR