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

  FORUM HardWare.fr
  Programmation
  Perl

  Generer une BDD XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Generer une BDD XML

n°961004
nninninne
Posté le 24-01-2005 à 18:52:40  profilanswer
 

Bonjour,
 
Savez vous comment generer des fichiers XML de taille importante?
C'est peut etre possible avec PERL mais je ne connais pas bien ce langage. Pouvez vous m'aider PLIZ.
 
merci d'avance

mood
Publicité
Posté le 24-01-2005 à 18:52:40  profilanswer
 

n°961015
couak
Posté le 24-01-2005 à 19:02:25  profilanswer
 

C'est possible de générer du XML avec Perl (via modules + libs) mais bon tout dépend du contexte
Pour le peu de XML que j'ai fais je ne pense pas que Perl soit le meilleur outil pour, excepté pour les petites structures

n°961024
nninninne
Posté le 24-01-2005 à 19:08:12  profilanswer
 

A partir d'une structure simple :
<annuaire>
   <personne>
       <nom>hjsjdg</nom>
       <prenom>jshdjh</prenom>
 
</personne>

n°961027
nninninne
Posté le 24-01-2005 à 19:10:51  profilanswer
 

oups
a partir d'une structure simple(voir message d'avant), je voudrai utiliser un programme qui genere ce code xml en boucle et qui remplace les champs entre balise de facon aleatoire
Quel serai le code pour generer ce type de fichier?
 

n°961033
couak
Posté le 24-01-2005 à 19:16:47  profilanswer
 

c'est du one-shot ou c'est pour souvent refaire ce genre de choses ?
 
si c'est du one-shot perso je ferais un copier / coller 500 fois avec des termes génériques (XXXX, YYYYY, ZZZZ) et je remplacerais le tout via des sed&awk

n°961041
nninninne
Posté le 24-01-2005 à 19:24:06  profilanswer
 

desole, mais j'comprend pas tout (j'sui debutante)
one-shot?
sed&awk?
J'voudrai creer une BD XML et effectuer des requetes avec XQuery sur cette BDD pour tester les limites du logiciel et voir le temps de reponse des requetes. Donc j'pense qui faudrai creer des fichiers XML assez gros que se soit en balise imbrique comme en grosseur du fichier

n°961044
nninninne
Posté le 24-01-2005 à 19:28:13  profilanswer
 

sinon ok pour le copier coller mais comment je fais pour changer les valeurs entre les balises (parce que les changer 500 fois a la main ca fais bcp

n°961181
couak
Posté le 24-01-2005 à 20:34:26  profilanswer
 

One-shot : chose que tu ne fais qu'une seule fois, donc cela ne sert à rien de faire un programme compliqué pour une chose que tu n'utiliseras qu'une seule fois dans ta vie (c-a-d générer du XML)
 
Au vu de ton problème c'est bien du "one-shot", je te conseille donc de copier/coller X fois la portion de code dont tu auras besoin en mettant des valeurs "génériques" afin de les remplacer facilement via des outils style perl, sed ou awk (si tu travailles sous unix bien sûr)
par exemple :
- tu mets la valeur générique "NNNNNNNN" entre les balises <nom> et </nom>
- tu mets la valeur générique "PPPPPPPP" entre les balises <prenom> et </prenom>
 
Ensuite tu cherches à remplacer les NNNNNNNN et les PPPPPPPP par des valeurs aléatoires
 
 
 
bon je vais être gentil aujourd'hui :)
 
imagines que tu as le XML suivant dans fichier.xml :

Code :
  1. <annuaire>
  2.     <personne>
  3.         <nom>NNNNNNNN</nom>
  4.         <prenom>PPPPPPPP</prenom>
  5.     </personne>
  6.     <personne>
  7.         <nom>NNNNNNNN</nom>
  8.         <prenom>PPPPPPPP</prenom>
  9.     </personne>
  10.      ....
  11.     <personne>
  12.         <nom>NNNNNNNN</nom>
  13.         <prenom>PPPPPPPP</prenom>
  14.     </personne>
  15. </annuaire>


 
sous unix tu tapes :

Code :
  1. cat fichier.xml | perl -e 'sub alea { my @t=('a'..'z', 'A'..'Z'); return join "",map $t[rand @t],0..8; } while ($line=<STDIN> ) { $line=~ s/(NNNNNNNN)|(PPPPPPPP)/alea()/e; print $line }'

n°961281
matafan
Posté le 24-01-2005 à 21:25:33  profilanswer
 

Je ne comprend pas vraiment ce qui te pose probleme. En gros tu fais :

print "<annuaire>";
for my $i (1..10000) {
    my $lastname = randstr();
    my $firstname = randstr();
    print <<"EOF";
    <personne>
        <nom>$lastname</nom>
        <prenom>$firstname</prenom>
    </personne>
EOF
}
print "</annuaire>";


Puis voila, je te laisse le soin d'ecrire la fonction randstr().


Message édité par matafan le 24-01-2005 à 23:29:26
n°961322
nninninne
Posté le 24-01-2005 à 21:52:09  profilanswer
 

tro bien ça marche.
merci beaucoup tout le monde


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

  Generer une BDD XML

 

Sujets relatifs
XML->XML via XSL traitement des attributsMàj config client ($_SESSION) si màj de config serveur (BDD) [RESOLU]
Oracle - Gestion de la BDD & interfacage C++Comment lire une bdd SQL Server sous windows depuis Linux
Faire un editeur de fichier XML en C#[Java/SNMP] Convertion MIB/XML
[Resolu] [xml] pb encodageenregistrement de variables dans la BDD ou creation d'un fichier XML ?
Diriger un flux XML vers un parseur XSLT 
Plus de sujets relatifs à : Generer une BDD XML


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