Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
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 03/03/2008, 18h42   #1
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
Par défaut [DOM] Ajout d'élément à un fichier XML

Salut a tous ! voila c la première fois que j'utilise PHP pour écrire dans un fichier XML et je rencontre quelques erreurs !

voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
$filename = '../Clips.xml';
$dom = new DomDocument();
$dom->formatOutput = TRUE;
$dom->preserveWhiteSpace = FALSE;
$dom->load($filename);				 
$news = $dom->createElement('Clip');
$news->setAttribute('Chemin', $chemin);
$news->setAttribute('Titre',$_POST['titre_video']);
$dom->documentElement->appendChild($news);
$dom->save($filename);
et les erreus

Citation:

video uploadée avec succès !
Warning: DOMDocument::load() [function.DOMDocument-load]: Unsupported encoding UFT-8 in file:///D%3A/%23%23%23PERSO%23%23%23/site%20perso/www/Clips.xml, line: 1 in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 55

Fatal error: Call to a member function appendChild() on a non-object in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 59
Merci d'avance pour votre aide !!!
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 19h20   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
La deuxième erreur est, a priori et simplement, la conséquence de la première.

En ce qui concerne la première, il y a, semble-t-il, un problème au niveau de l'encodage qui est erroné ou n'est pas respecté. Par ailleurs, et à moins que vous n'utilisiez de l'UTF-8 pour vos pages/scripts, vos données doivent être encodées lors de vos différentes insertions/modifications :
Code :
1
2
$news->setAttribute('Chemin', utf8_encode($chemin));
$news->setAttribute('Titre', utf8_encode($_POST['titre_video']));
(ce ne doit pas être la seule possibilité ; on doit pouvoir sinon définir l'encodage par l'une des propriétés encoding de l'objet DomDocument)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 19h33   #3
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
Je viens de rajouter cela mais j'ai la meme erreur !
Sinon dans la propriété du domdocument ca se passe comment ?
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 19h45   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Faute de frappe UFT-8 (pour UTF-8) ? En tout cas l'encodage indiqué ne correspond pas à celui qui est réellement utilisé au niveau du fichier.

Pour la propriété encoding, je pensais à :
Code :
$dom->encoding = 'iso-8859-1'; // ou autre
Qui semblait modifier l'encodage utilisé de manière interne (qui est, par défaut du moins, de l'UTF-8).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 19h59   #5
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
Citation:
Faute de frappe UFT-8 (pour UTF-8) ?
???
De votre part ???

sinon j'ai toujours cette meme erreur !
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 20h05   #6
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
voici mon doc xml :

Code :
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UFT-8"?>
<Play_list>
	<Clip>
		<Chemin value="kamnouze.flv"/>
		<Titre value="j'accuse ces mots"/>
	</Clip>
 
</Play_list>
si il est en UFT-8 je dois alors l'encoder de cette maniere :

$dom->encoding = 'UFT-8';

mais la toujours :
Citation:

Warning: DOMDocument::load() [function.DOMDocument-load]: Unsupported encoding UFT-8 in file:///D%3A/%23%23%23PERSO%23%23%23/site%20perso/www/Clips.xml, line: 1 in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 56

Fatal error: Call to a member function appendChild() on a non-object in D:\###PERSO###\site perso\www\administration\inc\ajout_video.inc.php on line 60
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 20h16   #7
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
C bon probleme résolu !!

voici :

Code :
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<Play_list>
  
  <Clip>
    <Chemin value="kamnouze.flv"/>
    <Titre value="j'accuse ces mots"/>
  </Clip>
  
</Play_list>
ensuite :

Code :
1
2
3
4
5
6
7
8
9
10
$filename = '../Clips.xml';
$dom = new DomDocument();
$dom->encoding = 'utf-8'; // ou autre		
$dom->formatOutput = TRUE;
$dom->preserveWhiteSpace = FALSE;
$dom->load($filename);
$news = $dom->createElement('Clip');
$news->setAttribute('Chemin',utf8_encode($chemin));
$news->setAttribute('Titre',utf8_encode($_POST['titre_video']))	;		$dom->documentElement->appendChild($news);
$dom->save($filename);
mais par contre il faut que je vois pour qu'il mette chemin et titre en child et non pas en attribut de CLIP
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 20h46   #8
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
Alors mon ajout dans le fichier xml marche mais il ne prend pas la structure que je veux :

Code :
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<Play_list>
  <Clip>
    <Chemin value="kamnouze.flv"/>
    <Titre value="j'accuse ces mots"/>
  </Clip>
</Play_list>
quel sont les fonctions a utiliser pour creer un clip puis ensuite ajouter le chemin et le titre ???

merci d'avance !
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 22h16   #9
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
A en juger par votre code, ce n'est pas ce que vous demandez :
Code :
1
2
3
$news = $dom->createElement('Clip');
$news->setAttribute('Chemin', $chemin);
$news->setAttribute('Titre',$_POST['titre_video']);
Vous créez ici un élément Clip auquel vous adjoignez deux attributs (Titre et Chemin). Alors que vous voudriez deux fils de même nom :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$filename = '../Clips.xml';
$dom = new DomDocument();
$dom->formatOutput = TRUE;
$dom->preserveWhiteSpace = FALSE;
$dom->load($filename);
$nClip = $dom->createElement('Clip');
$nChemin = $dom->createElement('Chemin');
$nTitre = $dom->createElement('Titre');
$nChemin->setAttribute('value', utf8_encode($chemin));
$nTitre->setAttribute('value', utf8_encode($_POST['titre_video']));
$nClip->appendChild($nChemin);
$nClip->appendChild($nTitre);
$dom->documentElement->appendChild($nClip);
$dom->save($filename);
(non testé)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 08h44   #10
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
Code :
1
2
3
4
5
$nClip->appendChild($nChemin);
$nClip->appendChild($nTitre);
$dom->documentElement->appendChild($nClip);
$dom->save($filename);
A quoi correspond ce n devant le nom des variables ???
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h13   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Pourquoi cette question ? Ce ne sont que des variables : libre à vous de les nommer comme bon vous semble. Cependant, j'ai choisi ce préfixe pour la simple et bonne raison que certaines variables semblaient déjà définies dans un autre but ($chemin).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 15h21   #12
Membre habitué
 
Avatar de pierre24
 
Inscription : février 2008
Messages : 269
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2008
Messages : 269
Points : 106
Points : 106
Envoyer un message via MSN à pierre24
oui pardon j'ai survolé vite fait et je n'ai pas fait attention !

Merci !
pierre24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h20.


 
 
 
 
Partenaires

Hébergement Web