Page 1 sur 1

xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 10:30
par damien_55
bonjour,

J'ai un xml qui me parvient d'une API et qui contient des "&" que je veux remplacer par "&".

J'ai donc écrit ça:

Code : Tout sélectionner

<?php $Slideshows_xml = simplexml_load_file('test.xml'); str_replace("&", "&", $Slideshows_xml); foreach ($Slideshows_xml ->Slideshow as $Slideshow) { print "Nom de Slideshow: {$Slideshow->Title} <br />\n"; print "Id de Slideshow: {$Slideshow->ID} <hr />\n"; } ?>
ça ne fonction pas, on ne peut par utiliser un str_replace avec un xml ?

Merci de votre aide

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 11:06
par dix2
salut,

il faut écrire :
$Slideshows_xml = str_replace("&", "&", $Slideshows_xml);
car c'est la valeur de retour de la fonction str_replace qui contient les modifications

@+
dix2

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 11:22
par damien_55
Non, ça ne marche pas ??? On dirait que str_replace ne fonctionne pas sur un xml.

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 13:17
par xTG
Question d'encodage ? Certaines fonctions de PHP ne fonctionnent que sur de l'iso par exemple.

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 13:30
par damien_55
Je m'arrache les cheveux sur ce xml.

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?> <Slideshows> <Slideshow> <ID>7470120</ID> <Title>Oral cancer du sein</Title> <Status>2</Status><Created>Thu Mar 31 16:57:38 -0500 2011</Created> <Updated>Thu Mar 31 17:18:04 -0500 2011</Updated> <Language>fr</Language> <Format>ppt</Format> <Download>1</Download> <DownloadUrl>http://domaine.com/ppt-download/oralcancerdusein-110331165741-phpapp02.ppt?response-content-disposition=attachment&Signature=wgMHpIUGyoY4nwKbFciEPgPrOPg%3D&Expires=1332749418&AWSAccessKeyId=AKIAJLJT267DEGKZDHEQ</DownloadUrl> <SlideshowType>0</SlideshowType> <InContest>0</InContest> </Slideshow> <Slideshow> <ID>7470382</ID> <Title>Oral cancer du sein</Title> <Description/> <Status>2</Status> <Created>Thu Mar 31 17:38:57 -0500 2011</Created> <Updated>Thu Mar 31 17:55:13 -0500 2011</Updated> <Language>fr</Language> <Format>ppt</Format> <Download>1</Download> <DownloadUrl>http://domaine.com/ppt-download/oralcancerdusein-110331173902-phpapp02.ppt?response-content-disposition=attachment&Signature=2y7hQOSb80mhnPtE9Fnm7vmDKP0%3D&Expires=1332749418&AWSAccessKeyId=AKIAJLJT267DEGKZDHEQ</DownloadUrl> <SlideshowType>0</SlideshowType> <InContest>0</InContest> </Slideshow> </Slideshows>
Et je veux le aprse sauf que les "&" m'en empeche.

J'ai essayé:
<?php
 $Slideshows_xml = simplexml_load_file('test.xml');
 $Slideshows_xml = str_replace("&", "&", $Slideshows_xml);

 foreach ($Slideshows_xml ->Slideshow as $Slideshow) {
     print "Nom de Slideshow:{$Slideshow->Title} <br />\n";
     print "Id de Slideshow: {$Slideshow->ID} <hr />\n";

 }
?>
ça ne marche pas.

Code : Tout sélectionner

<?php $file=load('test.xml'); $dom = new DomDocument(); $dom->load($file); $xpath = new DOMXPath($dom); $arts = $xpath->query("/Slideshows/Slideshow/Title"); foreach ($arts as $art) { echo $art->nodeValue.""; } ?>
ça non plus.

Bref, si quelqu'un a une idée c'est bien venu.

A noté que le xml de base est fourni par une API donc je ne peux pas le modifier.
La méthode consisterait à charger le xml, remplacer les "&" et parser le résultat.

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 14:25
par xTG
Ah oui j'avais lu un peu vite...
Lorsque tu créés ton objet simple_xml ça te renvoie.... Un objet !
Or str_replace() fonctionne sur une string et renvoie une string.

Donc allons par étape, le parsage du XML c'est la création de l'objet. Cela se fait-il sans erreur avant de penser au reste ?

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 14:40
par damien_55
En fait je bosse sur un fichier test là en local. Si j'ouvre ce fichier dans mon navigateur, j'ai rien. (fichier xml, ci dessous)

Par contre sur le fichier envoyé par l'api (je te l'ai parvenir en mp) alors la il s'affiche. Je ne saisi vraiment. Il s'affiche alors qu'il contient des caracteres speciaux et pas de CDATA ??

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 15:48
par xTG
Si tu testes avec un fichier de test, ce fichier a-t-il été enregistré avec l'encodage utf8 ? ^^
Concernant le lien envoyé par MP il m'amène vers un fichier XML m'informant que la clé est incorrecte.

Re: xml, simple_xml, php et caracteres spéciaux

Posté : 26 mars 2012, 16:42
par damien_55
Résolu Merci.