ecrire au milieu d'un xml

xmatox
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 14:08

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 mai 2006, 14:10

Pourquoi est-ce que tu n'utiliserais pas l'objet DOMou, si tu as PHP 5, simplexml ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

xmatox
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 14:21

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 mai 2006, 14:27

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

xmatox
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 14:31

je sais pas :lol:

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 mai 2006, 14:34

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 :?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

xmatox
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 14:38

oui je viens de voir que c'été le 4 que j'ai, donc je suis obligé de faire avec simplexml ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 mai 2006, 14:47

Au contraire, tu ne peux pas utiliser simplexml :?

Renseigne toi sur les DOMElement et tu verras que tout ira bien ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1311 Messages

23 mai 2006, 15:01

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()

xmatox
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 15:01

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 :?

Invité
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 15:47

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 mai 2006, 16:04

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1311 Messages

23 mai 2006, 16:55

je sais c'etait juste pour la ramené :wink:

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 mai 2006, 17:10

C'est vrai :oops: en plus, mon exemple ne parle pas de DOMdocument :oops: fraudrais que je fasse gaffe à mes sources moi ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 17:24

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]