nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
12 avril 2008 à 14:21
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 2014
-
13 avril 2008 à 16:59
Salut,
j'ai un code php pour écrire dans un fichier XML qui ne marche pas comme je voudrai : je voudrai que le message et le pseudo s'ajoute dans le fichier XML sauf que ça remplace au lieu de s'ajouter !!!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 avril 2008 à 11:17
Hello,
comment tu te débrouilles pour tomber sur un exemple qui s'avère faux...??
$dom
= new
DOMDocument
(
'test1'
);
> on instancie un objet de type DOM. Mais ce constructeur prend en paramètres la version du document XML et son encodage. : $oDom new DOMDocument('1.1', 'utf-8');
Et pas autre chose. Donc 'test1' n'a aucun rôle ici. Et même en DOMXML (la version PHP4) il ne me semble pas que ela fonctionne ainsi.
$dom
->
load
(
$fichier
);
=> on crée un document via un fichier XML (on le charge, là).
Dans ce cas, le début du cocde devrait être :
$fichier = 'text.xml';
$dom = new DOMDocument;
$dom->load($fichier);
Ou mieux :
$fichier = 'test.xml';
$dom = DOMDocument::load($fichier);
$lefile
=
$new_file
->
appendChild
(
$new_type
); pourquoi ne pas mettre $letype ???
/*on rattache tout le <file> au DOM*/
$dom
->
appendChild
(
$new_file
);
=>
- on crée un noeud élémént qui s'appelle 'type'. Pour le créer, on doit le faire à partir de notre objet document (donc $dom).
- on crée un noeud texte dont la valeur est 'ppt'. Même remarque que précédemment, cela passe par le document.
- on rattache le noeud texte créé à l'élément créé au-dessus (ça va donner : <type>ppt</type>)
- on rattache ce nouveau noeud au noeud précédent créé juste avant cette partie de l'exemple (via
$new_file
=
$dom
->
createElement
(
'file'
); ), ce qui donne : <file>
<type>ppt</type></file>.
- finalement, on attache notre fragment de document au document : <file> devient alors la racine de notre document, et on a un truc du genre :
<?xml version="1.1" encoding="utf-8">
<file>
<type>
ppt
</type>
</file>
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 avril 2008 à 19:00
Salut,
merci de ta réponse malalam mais j'ai posté la question a juki_webmaster et il m'a dit que soit je jouait dans la cour des grand avec le DOM sois je faisait un truc pourri avec simplexml je crois !!! Le problème c'est que je ne sais pas comment faire car en fait je ne sais pas comment faire pour mettre mon texte entre le début et la fin !!!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 avril 2008 à 19:07
Si tu veux ajouter tes balises au milieu, passe par DOM en effet.
Une écriture "normale" via fopen ne te permettra que de les ajouter au début ou à la fin.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 avril 2008 à 19:27
Non je n'en connais pas.
Mais ce n'est pas compliqué dès l'instant ou on comprend la notion de document.
Un document, c'est tout ton flux.
Un document a toujours une racine.
<?xml version="1.1" encoding="utf-8" ?>
<root>
</root>
Chaque élément est créé via le document.
Puis il doit être attaché à un autre élément (la racine, par exemple).
<?xml version="1.1" encoding="utf-8" ?>
<root>
<element/>
</root>
Tout ceci fait qu'un document est constitué de noeuds. Il y a deux types de noeuds, les noeuds éléments, et les noeuds texte.
<?xml version="1.1" encoding="utf-8" ?>
<root>
<element>texte</element>
</root>
Un élément peut être constitué d'attributs
<?xml version="1.1" encoding="utf-8" ?>
<root>
<element name="nom">texte</element>
</root>
Et c'est tout.
Lis la doc de php.net sur DOM. Je reconnais qu'elle n'est pas très claire et plutôt bordélique. Mais elle est très pratique. L'extension DOM de php contient quasiment tout ce dont tu as besoin pour créer un document. Je dis quasiment parce qu'il peut manquer 2-3 trucs, mais ce sont des "trucs" dont tu n'auras jamais probablement jamais besoin, ou pas avant très longtemps, quand tu seras un expert en xml.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 12 avril 2008 à 19:33
merci, non je n'ai pas copié la source enfin si au début seulement mais après j'ai copié la sortie output et pour la doc DOM es ce qu'elle est en français ??
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 13 avril 2008 à 09:48
Salut,
J'ai trouvé cette exemple mais il y a une ou deux ligne que je ne comprend pas !!!
$dom = new DOMDocument('test1'); // a quoi sert cette ligne ??? qu'es-ce que test1 ???
$dom->load($fichier); je ne comprend pas ce qu'est $fichier !!!
/*nouvelle balise <file>*/
$new_file = $dom->createElement('file');
/*nouvelle balise <type>*/
$new_type = $dom->createElement('type');
$type_content = $dom->createTextNode('ppt');
$letype = $new_type->appendChild($type_content);
$lefile = $new_file->appendChild($new_type); pourquoi ne pas mettre $letype ???
/*on rattache tout le <file> au DOM*/
$dom->appendChild($new_file);
/*on enregistre dans un fichier*/
$dom->save("test.xml");
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 avril 2008 à 12:11
Je préfixe généralement mes variables par leur type, et pour les objets, je les préfixe généralement par un 'o'.
C'est tout.
Ensuite, j'ai repris l'écriture de l'exemple.