Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 13h50   #1
Invité de passage
 
Inscription : mars 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 12
Points : 1
Points : 1
Par défaut Génération de fichier XML avec PhP

Bonjour à toutes et à tous !

Je travail à titre scolaire sur la réalisation d'un script en php, permettant de stocker les informations d'un formulaire dans un fichier xml.
Si dans l'immédiat, la création du fichier s'effectue sans soucis, la réalisation de la structure et des sous noeuds elle, me pose des problèmes :
Bref voici le code en question :

Je test si le fichier liste.xml existe, sinon, je le crée : ce code fonctionne bien :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$fichier = new DOMDocument();
 
		$fichier->version = '1.0';
		$fichier->encoding = 'utf-8';
		$fichier->xmlStandalone = false;
		$fichier->formatOutput = true;
 
		$intro = $fichier->createComment("Powered by Eznable");
		$fichier->appendChild($intro);
		$intro = $fichier->createComment("Voici les membres de l'équipe de l'ERMeP.");
		$fichier->appendChild($intro);
 
		$ERMeP = $fichier->createElement('ERMeP');
		$fichier->appendChild($ERMeP);
 
		$fichier->save("./XML/liste.xml");
ca me donne cette affichage dans mon fichier xml :

Code :
1
2
3
4
 <?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--Powered by Eznable-->
<!--Voici les membres de l'équipe de l'ERMeP.-->
<ERMeP/>
Ensuite, c'est la que ca se gate pour moi, je cherche à insérer les données récupéré depuis le formulaire :
Voici le code (oui il n'y a pas les $_POST je les rajouterais par la suite):
Code :
1
2
3
4
5
6
7
8
9
10
11
$fichier = new DOMDocument();
		$fichier->load(realpath('./XML/liste.xml'));
		$fichier->formatOutput = true;
 
		$categorie = $fichier->createElement('enseignants');
		$fichier->firstchild->appendChild($categorie);
 
		$nom = $fichier->createElement('nom', 'pépé');
		$categorie->appendChild($nom);
 
		$fichier->save("./XML/liste.xml");
Un truc très simple, qui devait je pense me donner ce genre d'arborescence :

Code :
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--Powered by Eznable-->
<!--Voici les membres de l'équipe de l'ERMeP.-->
<ERMeP>
<enseignant>
<nom>pépé</nom>
</enseignant>
</ERMeP>
Donc ca n'est pas le cas,
A la place j'ai ceci :
Code :
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--Powered by Matthias Rolin-->
<!--Voici les membres de l'équipe de l'ERMeP.-->
<ERMeP/>
<enseignants>
  <nom>pépé</nom>
</enseignants>
et si je relance une deuxième fois, j'obtiens un warning :
DOMDocument::load() [domdocument.load]: Extra content at the end of the document in file:///H:/xampp/htdocs/Recherche/Try/XML/liste.xml, line: 5 in H:\xampp\htdocs\Recherche\Try\traitement2.php on line 24

Et surtout mon fichier xml se transforme en ceci :

Code :
1
2
3
4
<?xml version="1.0"?>
<enseignants>
  <nom>p&#xE9;p&#xE9;</nom>
</enseignants>

Si quelqu'un peut me renseigner sur mes erreurs, je lui en serais très reconnaissant. Merci.
Eznable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 14h20   #2
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
<?php
$fichier = new DOMDocument();
 
		$fichier->version = '1.0';
		$fichier->encoding = 'utf-8';
		$fichier->xmlStandalone = false;
		$fichier->formatOutput = true;
 
		$intro = $fichier->createComment("Powered by Eznable");
		$fichier->appendChild($intro);
		$intro = $fichier->createComment("Voici les membres de l'équipe de l'ERMeP.");
		$fichier->appendChild($intro);
 
		$ERMeP = $fichier->createElement('ERMeP');//on créé l'élément ERMeP
		$fichier->appendChild($ERMeP);//on le place dans le fichier
 
		$enseignants = $fichier->createElement('enseignants');//on créé l'element enseignants
		$ermep = $fichier->getElementsByTagName("ERMeP")->item(0);//on selectionne ERMeP
		$ermep->appendChild($enseignants);//on le place dedans/
		$i = 0;
		while($i != 10){
			$nom = $fichier->createElement('nom');//on créé un element NOM
			$node = $fichier->getElementsByTagName("enseignants")->item(0);//on récupère l'element enseignant
			$node->appendChild($nom);//on place l'element Nom dedans
			$nom = $fichier->createTextNode('popo');//on créé un noeud texte
			$node = $fichier->getElementsByTagName("nom")->item($i);// on récupère l'element nom précédement créé
			$node->appendChild($nom);//on place le noeud dedans.
			$i++;//on incrémente.
		}
		$fichier->save("./XML/liste.xml");
?>
Je ne suis pas expert en manipulation dom mais ceci fonctionne. Compare avec ton code pour comprendre. Je ne saurais pas te l'expliquer plus clairement que ce que j'ai annoté.

Cordialement, guillaume.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 18h43   #3
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Ajout d'une précision:

Tu peux faire ça aussi en php/echo et mettre un header qui va bien ^^

Code :
1
2
3
 
header ("Content-Type:text/xml");
echo '<ermep><enseignant><nom>toto</nom><nom>tutu</nom></enseignants></ermep>
Ca te permet, si tu ne gères pas bien le DomDocument de faire ça en texte .

Cordialement, guillaume.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2011, 08h10   #4
Invité de passage
 
Inscription : mars 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 12
Points : 1
Points : 1
Bon je teste toussa dans le courant de ce week-end et je vous tiendrais au courant !

En attendant, merci déjà d'avoir pris le temps de me répondre !
Eznable est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h54.


 
 
 
 
Partenaires

Hébergement Web