Génération de fichier XML avec PhP

Génération de fichier XML avec PhP - PHP - Programmation

Marsh Posté le 22-03-2011 à 11:32:24    

Bonjour à toutes et à tous !  
 
Je travail à titre scolaire sur la réalisation d'un script en php, permettant de stocker les informations d'un formulaire dans un fichier xml.
Si dans l'immédiat, la création du fichier s'effectue sans soucis, la réalisation de la structure et des sous noeuds elle, me pose des problèmes :  
Bref voici le code en question :  
 
Je test si le fichier liste.xml existe, sinon, je le crée : ce code fonctionne bien :  

Code :
  1. $fichier = new DOMDocument();
  2.  $fichier->version = '1.0';
  3.  $fichier->encoding = 'utf-8';
  4.  $fichier->xmlStandalone = false;
  5.  $fichier->formatOutput = true;
  6.  $intro = $fichier->createComment("Powered by Eznable" );
  7.  $fichier->appendChild($intro);
  8.  $intro = $fichier->createComment("Voici les membres de l'équipe de l'ERMeP." );
  9.  $fichier->appendChild($intro);
  10.  $ERMeP = $fichier->createElement('ERMeP');
  11.  $fichier->appendChild($ERMeP);
  12.  $fichier->save("./XML/liste.xml" );


 
ca me donne cette affichage dans mon fichier xml :
 
 

Code :
  1. <?xml version="1.0" encoding="utf-8" standalone="no"?>
  2. <!--Powered by Eznable-->
  3. <!--Voici les membres de l'équipe de l'ERMeP.-->
  4. <ERMeP/>


 
Ensuite, c'est la que ca se gate pour moi, je cherche à insérer les données récupéré depuis le formulaire :  
Voici le code (oui il n'y a pas les $_POST je les rajouterais par la suite):  

Code :
  1. $fichier = new DOMDocument();
  2.  $fichier->load(realpath('./XML/liste.xml'));
  3.  $fichier->formatOutput = true;
  4.  $categorie = $fichier->createElement('enseignants');
  5.  $fichier->firstchild->appendChild($categorie);
  6.  $nom = $fichier->createElement('nom', 'pépé');
  7.  $categorie->appendChild($nom);
  8.  $fichier->save("./XML/liste.xml" );


 
Un truc très simple, qui devait je pense me donner ce genre d'arborescence :
 

Code :
  1. <?xml version="1.0" encoding="utf-8" standalone="no"?>
  2. <!--Powered by Eznable-->
  3. <!--Voici les membres de l'équipe de l'ERMeP.-->
  4. <ERMeP>
  5. <enseignant>
  6. <nom>pépé</nom>
  7. </enseignant>
  8. </ERMeP>


 
Donc ca n'est pas le cas,  
A la place j'ai ceci :  

Code :
  1. <?xml version="1.0" encoding="utf-8" standalone="no"?>
  2. <!--Powered by Matthias Rolin-->
  3. <!--Voici les membres de l'équipe de l'ERMeP.-->
  4. <ERMeP/>
  5. <enseignants>
  6.   <nom>pépé</nom>
  7. </enseignants>


 
et si je relance une deuxième fois, j'obtiens un warning :
DOMDocument::load() [domdocument.load]: Extra content at the end of the document in file:///H:/xampp/htdocs/Recherche/Try/XML/liste.xml, line: 5 in H:\xampp\htdocs\Recherche\Try\traitement2.php on line 24  
 
Et surtout mon fichier xml se transforme en ceci :  
 

Code :
  1. <?xml version="1.0"?>
  2. <enseignants>
  3.   <nom>p&#xE9;p&#xE9;</nom>
  4. </enseignants>


 
Si quelqu'un peut me renseigner sur mes erreurs, je lui en serais très reconnaissant. Merci.


Message édité par Eznable le 22-03-2011 à 11:37:10
Reply

Marsh Posté le 22-03-2011 à 11:32:24   

Reply

Marsh Posté le 22-03-2011 à 17:20:56    

Quand tu récupères le fichier, fais un print_r($fichier->firstchild) pour voir si c'est bien le noeud ERMeP.
Peut-être que firstChild est le commentaire ...
 
Tu ferais mieux, pour récupérer un noeud donné, d'utiliser le XPath, c'est beaucoup plus propre que de compter sur l'ordre des noeuds.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed