Aller au contenu

Problême php SimpleXml encodage


Sujets conseillés

Posté

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 liste
for($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 !

Posté (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é par Kioob

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...