La meilleure méthode pour modifier un xml?

La meilleure méthode pour modifier un xml? - PHP - Programmation

Marsh Posté le 18-07-2006 à 11:00:23    

Bonjour à tous,
 
Je suis en train de faire un site en PHP/XML, mais voici que je me trouve confronté à un problème :
 
Comment bien faire pour modifier un fichier xml?
 
J'ai tenté un truc, c'est-à-dire, lire le fichier, et tout réécrire avec en plus mon objet en plus, ce qui je trouve, n'est pas très correct au niveau de la méthode...
 
Avez-vous d'autres solutions?
 
Merci beaucoup!

Reply

Marsh Posté le 18-07-2006 à 11:00:23   

Reply

Marsh Posté le 18-07-2006 à 11:05:16    

Pour modifier un fichier xml, le plus simple, c'est encore d'utiliser les fonctions de chargement/modification d'un fichier xml :
http://fr3.php.net/manual/fr/ref.xml.php
http://fr3.php.net/manual/fr/ref.simplexml.php
http://fr3.php.net/manual/fr/ref.domxml.php
 
Personellement, j'ai tendance à utiliser les deux derniers groupes de fonction en fonction de mes besoins.

Reply

Marsh Posté le 18-07-2006 à 11:09:24    

Merci pour cette réponse ultra-rapide, apparement, PHP ne le fait pas en natif, il faut installer un truc un plus...
Okay, je vais m'y atteler!  :)

Reply

Marsh Posté le 18-07-2006 à 11:38:24    

SimpleXml est activé par défaut sur PHP5, tout comme DOM ( tout court et pas DOM XML qui est un peu deprecated).

Reply

Marsh Posté le 18-07-2006 à 14:19:47    

Je viens de trouver autre chose là... J'ouvre le xml, j'atteins la dernière ligne et je l'efface pour rajouter le nouvel "objet"
C'est mieux ou faut vraiment que je change la méthode, parce que j'ai regardé les liens qui m'ont été donné et je n'ai pas trop trouvé mon bonheur...

Reply

Marsh Posté le 18-07-2006 à 14:31:31    

_sammm a écrit :

Je viens de trouver autre chose là... J'ouvre le xml, j'atteins la dernière ligne et je l'efface pour rajouter le nouvel "objet"
C'est mieux ou faut vraiment que je change la méthode, parce que j'ai regardé les liens qui m'ont été donné et je n'ai pas trop trouvé mon bonheur...


ça dépend la structure de ton xml, mais comme ça, j'aurais tendance à dire que c'est n'importe quoi.
Si tu as le xml suivant:


<cours>
 <salle>201</salle>
 <classe niveau="6eme" numero="12">
   <eleve>A</eleve>
   <eleve>B</eleve>
 </classe>
 <professeur>ANDRE</professeur>
</cours>


Et que tu souhaites rajouter un élève, ta méthode ne risque pas de fonctionner [:mlc]
 
Que tu l'as conseillé omega2, utilise le DOM ou simpleXML, il y en a vraiment pour 2 secondes.

Reply

Marsh Posté le 18-07-2006 à 14:40:11    

J'utilise simplexml pour lire le fichier, y'a pas de problème, mais je vois pas comment l'utiliser pour rajouter un objet ou en modifier un... à part en réecrivant tout...
Mais sinon, mon xml ne sera toujours avec une arbo du genre  
<test>
  <test1>
    <a></a>
    <b></b>
  </test2>
</test>
 
Mais si tu peux, si tu as le temps, m'expliquer comment tu ferais ça, ça m'aiderait beaucoup... parce que j'ai eu beau chercher sur php.net, ça me parle pas trop...

Reply

Marsh Posté le 18-07-2006 à 14:52:41    

hum, je crois que j'ai trouvé un truc 'achement intéressant... je vais approfondir la piste...
merci du coup de main, je reviendrais ptet poser une ou deux questions :)

Reply

Marsh Posté le 18-07-2006 à 14:53:22    

_sammm > Moi aussi, j'utilise SimpleXML pour lire un fichier. De mémoire, la derniére fois que j'ai du passer d'une lecture simple à une lecture/écriture d'un fichier xml, j'ai juste utilisé la fonction de transformation d'un élément simpleXML en élément DOM et utilisé ensuite les fonctions dom pour la partie écriture.

Reply

Marsh Posté le 18-07-2006 à 14:56:34    

hoho, ça m'aide pas mal ce que tu me dis là... je vais jeter un coup à ce truc là aussi...
En tous cas, que de réactivité!

Reply

Marsh Posté le 18-07-2006 à 14:56:34   

Reply

Marsh Posté le 19-07-2006 à 11:00:01    

C'est good! J'ai réussi ce que je voulais faire! Merci pour votre aide
Par contre, juste pour la mise en page, ça me met tous mes objets nouvellement créés en ligne sans retour...

Reply

Marsh Posté le 19-07-2006 à 11:03:35    

rajoute un element br au endroit ou tu veux un retour à la ligne ou mieux style tes elements via css

Reply

Marsh Posté le 19-07-2006 à 11:12:20    

Je me suis mal exprimé, c'est dans le fichier xml que ça me met tout en ligne.

Reply

Marsh Posté le 19-07-2006 à 11:22:04    

_sammm a écrit :

Je me suis mal exprimé, c'est dans le fichier xml que ça me met tout en ligne.


Nan nan c'est moi qui ait mal lu la question ;)
 
Si tu as un objet dom, tu peux lui préciser de formater la sortie:

Code :
  1. $doc->formatOutput = true;


Reply

Marsh Posté le 19-07-2006 à 11:28:05    

merci beaucoup!

Reply

Marsh Posté le 19-07-2006 à 11:37:32    

ça marche quand on lit un fichier, mais pas quand on le loade et qu'on écrit dessus.  :heink:  
bizarre, je vais essayé de trouver quelque chose sur php.net

Reply

Marsh Posté le 24-07-2006 à 16:31:58    

J'ai rien trouvé sur "comment qu'on fait pour écrire proprement le code dans un fichier xml"...
 
Personne n'a d'idée svp?
 
Merci!

Reply

Sujets relatifs:

Leave a Replay

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