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

en plus, mon exemple ne parle pas de DOMdocument

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]