-
Modifier fichier xml
Bonjour,
Je voudrais ouvrir et modifier un fichier xml.
Pour l'ouverture j'utilise simplexml_load_string. Une fois le fichier chargé, quand je fais un echo var_dump pour voir l'objet créé j'ai un souci d'encodage.
Voilà mon code :
Code:
$xml = simplexml_load_string(mb_convert_encoding(file_get_contents($Way),"ISO-8859-1","ISO-8859-1"));
Quand je fais un essai d'encodage avec une chaine de caractère, ça fonctionne.
Je ne sais pas si c'est possible de travailler sur l'encodage d'un objet créée avec un simplexml_load_string ?
Merci pour votre aide
-
je t'ai dis que c'est ton fichier a la base qui est pas bon, va falloir remplacer le charset avant de l'ouvrir
-
Oui, je comprends bien mais si je mets le charset en UTF-8 j'ai :
Input is not proper UTF-8, indicate encoding
Alors je le ré encode ou ré décode en UTF-8
Code:
$xml = simplexml_load_string(mb_convert_encoding(file_get_contents($Way),"UTF-8","UTF-8"));
Et là, il ne m'affiche pas les caractères accentués.
Donc ce n'est peut être pas de l'UTF-8.
Comment connaitre l'encodage d'un fichier ?
-
ton fichier c'est d'utf-8 mais l'entête XML c'est marquer iso-8859-1,
il va donc falloir faire un utf8_decode, lire le xml et ensuite faire un utf8_encode, et au dela de tout ca, il faut verfie l'encodage de ton code en-tète du serveur
si tu veux savoir en quoi renvoie le serveur, avec firefox tu clique droti dans la page et tu fais "information sur la page", pour un fichier tu peux voir c avec notepad++ ou eclipse (notepad++ -> encodage)
et en plus de tout ca y'a le charset dans le fichier qui est aussi pris en compte
-
Salut,
Bon, je pense que le problème d'encodage est résolu grâce à toi.
J'ai modifier mon default_charset dans mon php.ini en le mettant à UTF-8.
Et pour charger mon fichier j'utlise la ligne :
Code:
$xml = simplexml_load_string(mb_convert_encoding(file_get_contents($Way),"ISO-8859-1","ISO-8859-1"));
Quand je fais un var_dump, les accents et les apostrophes s'affichent corectement.
Maintenant il me reste plus qu'à essayer de modifier la valeur d'un noeud.
Merci beaucoup à tous en tout cas
-
t'as retester avec simplexml_load_file ?
-
Quand je fais un simplexml_load_file, j'ai de nouveau des soucis d'encodage
Donc je n'ai rien réglé du tout et c'est pour ça que je n'arrive pas à afficher la valeur d'un noeud !
Pfff je continue.
Si je remets le default_charset = "iso-8859-1", les accents s'affichent bien mais pas les apostrophes !!
Merci
-
SAlut,
Maintenant quand je fais un load_file les caractères s'affichent bien mais le fichier ne se charge pas en entier.
J'ai un Warning :
I/O warning : failed to load external entity
Avant d'ouvrir mon fichier je fais un file_exists et quand je fais afficher le chemin du fichier ça m'a l'air correct.
C'est toujours un problème d'encodage ?