Bonjour,
Je me bats depuis ce matin pour gérer un fichier XML avec PHP.
J'utilise donc DOMDocument pour créer le fichier et SimpleXML pour ajouter des noeuds, etc ...
Voici donc le code de création :Problème : Ici comme vous pouvez le voir j'ai créer des noeuds avec des accents et cela ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33 function createNewXML() { // Création du fichier en mémoire $file = new DOMDocument('1.0', 'iso-8859-1'); // Création du noeud racine $root = $file->createElement('rss'); //On crée l élément racine $root->setAttribute('version', '2.0'); //On lui ajoute l attribut version (2.0) $root = $file->appendChild($root); //On insère la racine dans le document // Création du noeud channel $element_channel = $file->createElement('channel');//On crée un élément channel $element_channel->setAttribute('id','news'); //On donne un attribut id à notre channel $element_channel = $root->appendChild($element_channel);//On ajoute cet élément à la racine // Création du noeud description et ajout du texte à l élément $element_description = $file->createElement('description', 'Les actualités en général'); $element_channel->appendChild($element_description);//on insère dans le noeud channel // Création du noeud link et ajout du texte à l élément $element_link = $file->createElement('link', 'http://www.mon_site.com'); $element_channel->appendChild($element_link);//on insère dans le noeud channel // Création du noeud title et ajout du texte à l élément $element_title = $file->createElement('title', 'Actualités'); $element_channel->appendChild($element_title);//on insère dans le noeud channel //sauvegarde du fichier XML $file->save('flux_rss.xml'); //On retourne le fichier XML return openXML(); }
- Si je laisse le code ainsi : l'enregistrement ($file->save('flux_rss.xml');) foire et j'ai une erreur
Donc le fichier flux_rss.xml est vide.output conversion failed due to conv error, bytes 0xE9 0x73 0x20 0x65- J'ai donc essayé en entourant mon texte ayant des caractères accentués avec <![CDATA [...]]>, c'est pareil.
- J'ai donc essayé de feinter en utilisant htmlentities plutôt que CDATA. Il y a alors de l'amélioration : mon fichier XML est enregistré et lorsque je regarde le contenu, les accents sont bien remplacés par leur équivalent HTML mais lorsque j'essaie de réouvrir le fichier avec la fonction suivante :
ça plante avec le warning suivant (entre autres) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function openXML() { // Ouverture du fichier $file = @simplexml_load_file ('flux_rss.xml'); //On retourne le fichier return $file;du coup le fichier n'est pas chargé...simplexml_load_file() [function.simplexml-load-file]: flux_rss.xml:2: parser error : Entity 'eacute' not defined- J'ai essayé en passant par l'utf-8, l'erreur est différente :
donc le fichier n'est pas chargé. Niveau résultat : j'ai un fichier XML dont tous les caractères accentués ont disparus.simplexml_load_file() [function.simplexml-load-file]: flux_rss.xml:2: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE9 0x73 0x20 0x65
J'ai regardé 50000 tutos, forum, FAQ, specifications et autres sur le Net mais rien ne marche. J'avais vu ce lien : http://www.developpez.net/forums/sho...ht=rss+accents et j'y croyais... mais non.
Donc j'aurais besoin d'aider s'il vous plait.
Si quelqu'un voit comment résoudre le problème, je suis preneur.
Merci d'avance.
PS : je crois que j'aurais mieux fait de ne pas me réveiller ce matin.
Partager