modification d'un fichier xml

asdepik
Invité n'ayant pas de compte PHPfrance

10 févr. 2010, 11:48

bonjour
j'ai un fichier xml de cette forme par exemple qui se nomme par exemple test.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<note name="" isbool="true">
     <to>Nicolas</to>
     <from>Carla</from>
     <heading>Rappel</heading>
     <body>essai</body>
</note>
mon soucis et que parfois le programme ne va m'envoyer que cette partie là
<to>Nicolas</to>
     <from>Carla</from>
     <heading>Rappel</heading>
     <body>essai</body>
donc la le document n'est plus valide

ma question est que voudrait rajouter les balises racines avec la version du document en utilisant php mais je suis bloqué

voici le code dont je travaille :
 $this->xmlDOM=new DOMDocument();        
       if($this->valideDoc('test.xml'))
      {
        $this->xmlDOM->Load('test.xml');
     }else{
      $this->xmlDOM->Load($this->addheaderFooter('test.xml'));
      }
        $events=$this->xmlDOM->childNodes->item(0)->childNodes; 
ce que voudrai faire c'est de tester d'abord si le document contient bien le balise racine sinon je le traite avec un autre methode qui rajoute les entetes et la version

jai trouvé ceci mais je suis bloqué quand je veut rajouter le body c'est à dire le fichier xml manquant (pas de balise racine)
Ici la methode createElement prend comme parametre un objet alors que moi j'ai string le nom de mon fichier
// Instance de la class DomDocument
$doc = new DOMDocument();

// Definition de la version et l'encodage
$doc->version = '1.0';
$doc->encoding = 'ISO-8859-1';

// Ajout d'un commentaire a la racine
$comment_elt = $doc->createComment('Created By FormatiX.Eu');
$doc->appendChild($comment_elt);

// Ajout la balise 'note' a la racine
$note_elt = $doc->createElement('note');
$doc->appendChild($note_elt);
$to_elt      = $doc->createElement('to', 'Nicolas');
// Specifier que les elements to/from/heading/body sont dans 'note'
$note_elt->appendChild($to_elt);
// Rendre Joli ;)
$doc->formatOutput = true;

// Afficher le document XML
echo $doc->saveXML();

// Sauver le document XML sous le nom simple.xml
$doc->save('test.xml');
merci bien pour votre aide

Eléphant du PHP | 74 Messages

11 févr. 2010, 13:25

as tu regardé du coté de la librairie SimpleXML ? http://fr.php.net/manual/fr/book.simplexml.php

ca serait bien plus simple que faire du dom :mrgreen:
Mon projet opensource de gestion de Devis, Commandes, Factures, pour TPE : OpenDCF : http://opendcf.1g6.biz