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

  FORUM HardWare.fr
  Programmation
  Perl

  Parsing et modification fichier xml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parsing et modification fichier xml

n°1818486
boule_de_g​ome
Posté le 28-11-2008 à 16:00:22  profilanswer
 

Bonjour,
 
je souhaite mettre a jour un fichier xml en remplissant certaines balises mais le soucis c'est que je ne n'obtiens pas ce que j'aimerai.
Voici ce que j'ai écrit :

Code :
  1. #!/usr/bin/perl
  2. # use module
  3. use strict;
  4. use XML::DOM;
  5. use Data::Dumper;
  6. # parsing du fichier toto.xml
  7. my $parser = new XML::DOM::Parser;
  8. my $doc = $parser->parsefile("toto.xml" );
  9. if (!defined($parser) || !defined($doc))
  10. {
  11. undef($parser) if (defined($parser));
  12. next;
  13. }
  14. #mise a jour du fichier xml.
  15. my $base_nodes = $doc->getElementsByTagName("Test" );
  16. if (defined($base_nodes) && $base_nodes->getLength > 0 && defined(my $base_node = $base_nodes->item(0)))
  17. {
  18. $base_node->setAttribute("toto", "undeuxtrois" );
  19. $base_node->setAttribute("titi", 55);
  20. $base_node->setAttribute("tata", "cinqsixsept" );
  21. $base_node->setAttribute("yoyo", 44);
  22. }
  23. $doc->printToFile("out.xml" );


 
Mon fichier toto.xml

Code :
  1. <Test>
  2. <donnees>
  3.  <toto></toto>
  4.  <titi></titi>
  5.  <autre>
  6.   <tata></tata>
  7.   <yoyo></yoyo>
  8.  </autre>
  9. </donnees>
  10. </Test>


 
Le fichier out.xml de sortie :

Code :
  1. <Test toto="undeuxtrois" titi="55" tata="cinqsixsept" yoyo="44">
  2. <donnees>
  3.  <toto/>
  4.  <titi/>
  5.  <autre>
  6.   <tata/>
  7.   <yoyo/>
  8.  </autre>
  9. </donnees>
  10. </Test>


 
Ce que j'aimerai c'est que les données soient mises entre les balises c'est a dire comme ceci :

Code :
  1. <Test>
  2. <donnees>
  3.  <toto>undeuxtrois</toto>
  4.  <titi>55</titi>
  5.  <autre>
  6.   <tata>cinqsixsept</tata>
  7.   <yoyo>44</yoyo>
  8.  </autre>
  9. </donnees>
  10. </Test>


 
Merci

mood
Publicité
Posté le 28-11-2008 à 16:00:22  profilanswer
 

n°1818621
gilou
Modérateur
Modzilla
Posté le 28-11-2008 à 17:03:20  profilanswer
 

Tu comprends quelque chose au XML??
Parce que pourquoi tu écris ceci:

Citation :

$base_node->setAttribute("toto", "undeuxtrois" );


Si ce n'est pas un attribut, mais le contenu textuel d'un element que tu veux modifier?
 
La, ton script, il fait exactement ce que tu as écrit:
Il crée un attribut toto sur le noeud racine test, trouvé par $doc->getElementsByTagName("Test" );,  
et il lui donne la valeur "undeuxtrois"
D'ou le <Test toto="undeuxtrois"  que tu as ensuite en sortie.
A+,


Message édité par gilou le 28-11-2008 à 17:03:34

---------------
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

  Parsing et modification fichier xml

 

Sujets relatifs
variables à base d'un fichier en inputNon modification de variable en JML
Fichier Batch et commande FTPmettre en forme un fichier
Est-il possible d'écrire dans un fichier xls sans l'ouvrir ?Problème Ajax d'ouverture d'un fichier en attachement
[C] Problème de lecture dans un fichier en C : fscanfTelechargement fichier distant
Editer le registre dans un fichier bat[optimisation] fichier txt -> insert base de donnée
Plus de sujets relatifs à : Parsing et modification fichier xml


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