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

  FORUM HardWare.fr
  Programmation
  Perl

  Récupération de données XML dans des tableaux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupération de données XML dans des tableaux

n°2037935
lalalallal
Posté le 23-11-2010 à 21:10:01  profilanswer
 

Bonjour,
 
je me permet de vous contacter car je suis amené à développer un script Perl (je n'ai jamais programmé en Perl et je dois avouer que je suis un peu dérouté par ce langage).
 
Après avoir ouvert un fichier XML, il devra le parcourir et stocker des données dans 3 tableaux différents. Pourriez-vous m'aider à réaliser ces deux actions.
 
Voici le format du XML (il y a un nombre variant et inconnu à l'avance de voitures):
 


<Voitures>
   <Voiture>
       <Id></Id>
       <Prix></Prix>
       <Peinture>
            <Couleur></Couleur>
            <Mat></Mat>
       </Peinture>
   </Voiture>
...
   <Voiture>
       <Id></Id>
       <Prix></Prix>
       <Peinture>
            <Couleur></Couleur>
            <Mat></Mat>
       </Peinture>
   </Voiture>
<Voitures>


Voila je voudrais que pour chaque voiture on récupère dans 3 tableaux l'Id, le Prix et la Couleur
 
Ainsi le premier tableau serait : Id Voiture1   Id Voiture 2   Id Voiture 3......
le deuxième : Prix voiture 1    Prix voiture 2 ....
troisième : Couleur Voiture 1   ...
 
Si quelqu'un pouvait m'aider ce serai vraiment cool.
 
Merci,
 
Lalalallal


Message édité par lalalallal le 23-11-2010 à 21:40:30
mood
Publicité
Posté le 23-11-2010 à 21:10:01  profilanswer
 

n°2038007
gilou
Modérateur
Modzilla
Posté le 24-11-2010 à 10:32:21  profilanswer
 

Citation :

Si quelqu'un pouvait m'aider ce serai vraiment cool.

Ici, on aide, on ne fait pas le boulot à votre place, donc montrez ce que vous avez fait et on vous dira ce qui ne va pas, surtout que c'est facile à faire, ça.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2038532
lalalallal
Posté le 25-11-2010 à 20:50:23  profilanswer
 

Bonsoir,
 
désolé pour le temps de réponse mais j'ai eu un petit imprévu hier qui m'a empêché de venir ici ^^
 
Voici ce que j'ai fait :


$nom_fichier_courant = $chemin_rec_fic.fct_format_nom_nom_fichier($date,'voiture.xml');
if(open(INPUT,$nom_fichier_courant))
{
while(<INPUT> )
{
chomp;
if(/\<Id\>/)
{
push(@tab_id, ??????)
}
if(/\<Id\\\>/)
{
push(@tab_id,"" )
}
 
...
 
}
}
close(INPUT);
push(@liste_fichiers_a_archiver, $nom_fichier_courant);
}


 
je n'arrive pas a récupérer ce qui suit ( $' ) sans la fin de la borne...
de plus je ne suis pas sur pour le "   /\<Id\>/   " et "   /\<Id\\\>/  "
 
Merci beaucoup,
 
Lalalallal
 
ps : ah oui comment est-ce que l'on fait pour créer une fonction qui prends en argument 3tableaux ?

n°2038545
gilou
Modérateur
Modzilla
Posté le 25-11-2010 à 22:53:56  profilanswer
 

Bon, un truc vite fait et loin d'être optimal:

Code :
  1. #!/usr/local/bin/perl -w
  2. use strict;
  3. use warnings;
  4.  
  5. my (@tab1, @tab2, @tab3);
  6. my $filename = "..."; # a vous de faire ce qu'il faut ici.
  7. open (my $file, "<", $filename) or die $!;
  8. while (<$file> ) {
  9.    if (/\<Id\>([^<]*)\<\/Id\>/o) {push @tab1, $1;}
  10.    if (/\<Prix\>([^<]*)\<\/Prix\>/o){push @tab2, $1;}
  11.    if (/\<Couleur\>([^<]*)\<\/Couleur\>/o){push @tab3, $1;}
  12. }
  13. close $file;


Si vos champs sont sur plus d'une ligne, ce code ne fonctionnera pas (et il faudra employer un module avec un vrai parser xml), mais je na sais pas comment sont vos données
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2038546
lalalallal
Posté le 25-11-2010 à 23:20:12  profilanswer
 

Bonsoir,
 
Merci beaucoup, le fichier xml est sur plusieurs lignes, on l'a généré comme ca pour pouvoir le modifier rapidement a la main avec le bloc note... (il a la meme tete que ce que j'ai donné ou qu l'on obtiendrai en l'ouvrant avec ie)
 
Encore merci pour ton aide
 
Lalalallal

n°2038558
gilou
Modérateur
Modzilla
Posté le 26-11-2010 à 01:35:49  profilanswer
 

Pour optimiser un peu, si tu n'as pas deux champ sur la même ligne dans tes données, tu peux remplacer
{push @tab1, $1;}
par  
{push @tab1, $1; next;}
Et pareil pour les deux autres lignes.
Ça évite de passer dans des tests inutiles.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

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

  Récupération de données XML dans des tableaux

 

Sujets relatifs
[MySQL] Ajouter une colonne et les données d'une autre tableExtraction de données apartir d'un fichier XML
Equivalent du SELECT de MySQL en PHP/XML? Extraire une donnée spécifiqMacro pour compiler des fichiers en tableaux et generer les graphes
[VBA] Déclaration automatique de tableauxMacro: filtrer des données avec plus de 2 critères?
[C] Structure de données à utiliser pour le parcours de dossierTransfert de données DB2/400 vers Oracle
Plus de sujets relatifs à : Récupération de données XML dans des tableaux


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