damien-s Posté 10 Juin 2008 Posté 10 Juin 2008 Bonsoir, J'ai un problême avec un script de récupération de données contenues dans un ficher .xml, dès qu'il y a des caractères spéciaux dans le .xml, il ne fonctonne plus ! Alors que çà marche bien si il n'y en a pas. Sauriez-vous comment remédier à ce problême ? <?php// On charge le document XML$doc = new DOMdocument();$doc->loadXML(file_get_contents('../../AirPlayHistory.xml'));// On get le noeud principal$doc_event = $doc->getElementsByTagName('Event')->item(0);// On fait la liste des noeuds Song$doc_event_song = $doc_event->getElementsByTagName('Song');// On listefor($i=0; $i < $doc_event_song->length; $i++) { // On get le noeud actuel $node_song_act = $doc_event_song->item($i); // On get les 2 autres sous-noeuds $node_artist_act = $node_song_act->getElementsByTagName('Artist')->item(0); $node_info_act = $node_song_act->getElementsByTagName('Info')->item(0); // On défini les variables $song['title'] = $node_song_act->getAttribute('title'); $artist['name'] = $node_artist_act->getAttribute('name'); $artist['ID'] = $node_artist_act->getAttribute('ID'); $info['StartTime'] = $node_info_act->getAttribute('StartTime'); $info['JazlerID'] = $node_info_act->getAttribute('JazlerID'); $info['PlayListerID'] = $node_info_act->getAttribute('PlayListerID'); /******************************************************************** *** Les variables ci-dessus contiennent les infos du titre ********************************************************************/ echo ' <ul> <li><strong>Artiste</strong> : ' . htmlentities($artist['name']) . ' <em>[' . htmlentities($artist['ID']) . ']</em></li> <li><strong>Titre</strong> : ' . htmlentities($song['title']) . '</li> <li>Démarré à ' . htmlentities($info['StartTime']) . '</li> </ul>';}?> Lien du xml : http://radiosworld.free.fr/AirPlayHistory.xml Page web affichant les données : http://radiosworld.free.fr/radyonne/site/xml_radyonne.php5 Merci !
Kioob Posté 10 Juin 2008 Posté 10 Juin 2008 (modifié) Hello, ton fichier XML est indiqué comme étant en ISO-8859-1 dans les entêtes HTTP, mais par défaut les parseurs XML travaillent en UTF-8. Je suppose qu'il suffit "juste" ici d'indiquer à ton parseur qu'il s'agit d'ISO. A ce que je comprends de la doc il suffit de modifier la propriété $encoding de ton objet ; mais je n'ai pas essayé. (en fait ça se fait aussi via le constructeur, ce qui est quand même plus propre : http://fr.php.net/manual/en/domdocument.construct.php ) Modifié 10 Juin 2008 par Kioob
damien-s Posté 10 Juin 2008 Auteur Posté 10 Juin 2008 (modifié) Merci, Donc ceci: $doc = new DOMdocument('1.0', 'iso-8859-1'); ? Je test çà! EDIT : Pas l'air d'être çà, j'ai toujours mon erreur : http://radiosworld.free.fr/radyonne/site/xml_radyonne.php5 Modifié 10 Juin 2008 par damien-s
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant