Page 1 sur 2

ecrire au milieu d'un xml

Posté : 23 mai 2006, 14:08
par xmatox
bonjour a tous,

j'ai trouvé plusieur ressource pour ecrire dans un xml de facon classique mais j'arrive pas a trouver pour deplacer le curseur avant la derniere balise de mon xml

mon xml est simple :

Code : Tout sélectionner

<site> <livre> <nom>moi</nom> <texte>lala lala</texte> </livre> <livre> <nom>remoi</nom> <texte>relala lala</texte> </livre> </site>
mon php j'en suis la :
if($fp=fopen("monxml.xml","a")){
fputs($fp, "\n");
fputs($fp,"<livre>\n");
fputs($fp,"<nom>reremoi</nom>\n");
fputs($fp,"<texte>rere lala</texte>\n");
fputs($fp,"</livre>");
fclose($fp);
}
avec ca, ca ecrit a la fin, et je voudrai que ca écrit juste avant </site>

merci

Posté : 23 mai 2006, 14:10
par zeus
Pourquoi est-ce que tu n'utiliserais pas l'objet DOMou, si tu as PHP 5, simplexml ;)

Posté : 23 mai 2006, 14:21
par xmatox
parce que ca me parait plus compliqué :oops:

j'ai regardé un peu DOM j'ai pas tout compris ...

comme j'ai fait je trouvé ca simple, si je pouvais juste deplacer le cuseur ca serai bien

merci

Posté : 23 mai 2006, 14:27
par zeus
Déjà, est-ce que tu disposes de PHP 5 ?

Sinon, ecrire dans un fichier, c'est plus simple comme tu as fait. Après, définir un noeud d'entré, c'est plus simple avec DOM ;)

Posté : 23 mai 2006, 14:31
par xmatox
je sais pas :lol:

j'utilise easyphp1.8, je sais pas quelle version de php j'ai avec ca

Posté : 23 mai 2006, 14:34
par zeus
si tu veux savoir, il suffit d'exectuer ton phpinfo.php

Sous easyPHP, il me semble que si tu fait http://12.0.0.1/phpinfo.php, tu y accede.

Sinon, EasyPHP, c'est PHP 4 :?

Posté : 23 mai 2006, 14:38
par xmatox
oui je viens de voir que c'été le 4 que j'ai, donc je suis obligé de faire avec simplexml ?

Posté : 23 mai 2006, 14:47
par zeus
Au contraire, tu ne peux pas utiliser simplexml :?

Renseigne toi sur les DOMElement et tu verras que tout ira bien ;)

Posté : 23 mai 2006, 15:01
par jeff
Au contraire, tu ne peux pas utiliser simplexml Confused
je suis pasur mais je crois qu'avec la version 5.1.3 c'est possible 2 nouvelles methode on été ajoutées
# Added addChild() method
# Added addAttribute()

Posté : 23 mai 2006, 15:01
par xmatox
je vois comment ca marche en gros, mais je trouve pas d'exemple compréhensible donc je sais pas trop comment l'utiliser ...

alala quel glan je fais :?

Posté : 23 mai 2006, 15:47
par Invité
pour le moment j'en suis a ca avec dom :
$xml = new DOMDocument();
$xml->load("livre.xml") or die ("pas trouvé");

$node->getAttribute("livre");
$nom=$xml->CreateElement("nom","lala");
$texte=$xml->CreateElement("texte","hihi hihi");
$node->appendChild($nom);
$node->appendChild($texte);

$xml->save("livre.xml");

et ca me renvois ca :
Fatal error: Cannot instantiate non-existent class: domdocument in c:\mato\easyphp1-8\www\jeu\livre.php on line 32
si vous savais ce que ca veux dire :wink:

merci

Posté : 23 mai 2006, 16:04
par zeus
Au contraire, tu ne peux pas utiliser simplexml Confused
je suis pasur mais je crois qu'avec la version 5.1.3 c'est possible 2 nouvelles methode on été ajoutées
# Added addChild() method
# Added addAttribute()
Il n'a PAS PHP 5 ;)

Tiens, un exemple ;)
http://www.laltruiste.com/document.php? ... emple.html

Posté : 23 mai 2006, 16:55
par jeff
je sais c'etait juste pour la ramené :wink:

par contre tu ne peut pas utilisé DOM ave php4
il faut utilisé DOM_XML

Posté : 23 mai 2006, 17:10
par zeus
C'est vrai :oops: en plus, mon exemple ne parle pas de DOMdocument :oops: fraudrais que je fasse gaffe à mes sources moi ;)

Posté : 23 mai 2006, 17:24
par Invité
donc j'ai repris pour une troisieme version en domxml, ca marce toujours pas j'en suis la pour le moment :
if(!$dom = domxml_open_file("livre.xml")) {
  echo "Erreur lors de l'analyse du document\n";
  exit;
}

$doc = $dom->document_element();

$node = $dom->create_element("livre");
$node->set_attribute("nom", "lala");
$node->set_attribute("texte", "hihi hddihi");
$newnode = $doc->append_child($node);

alala je vais pas m'en sortir ...[/php]