Flux XML en UTF8 avec les balises CDATA
4 messages
• Page 1 sur 1
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
Flux XML en UTF8 avec les balises CDATA
Bonjour
Je rencontre un problème avec un flux XML qui se décompose comme ceci :
Je le lis comme cela :
Mais voila lors de l'insertion dans mysql (sous wamp) le problème des accents n'est pas réglé du tout .
Du moins ca fonctionne tant que les éléments du flux ne sont pas dans les balises CDATA .
J'ai tt essayé mais rien a faire , c'est comme si UTF8_decode etait ignoré .
Je rencontre un problème avec un flux XML qui se décompose comme ceci :
- Code: Tout sélectionner
<hotel>
<hotel_id>11601</hotel_id>
<hotel_nom><![CDATA[FIRST HOTEL AALBORG]]></hotel_nom>
<cp>21000</cp>
<departement_id>0</departement_id>
<departement></departement>
<ville_id>1</ville_id>
<ville>Aalborg</ville>
<pays>Danemark</pays>
<pays_id>1</pays_id>
<description><![CDATA[L'hôtel First d'Aalborg se trouve à seulement 7 km de l'aéroport, à 1 km de la gare et a une distance de marche de magasins, des attractions touristiques et des restaurants. Il compte 155 chambres équipées de salles de bains privées, et 12 suites avec ]]></description>
<etoiles>4</etoiles>
<chambres>0</chambres>
<image>http://www.hotelclub.net/common/imagegallery/HotelImage.aspx?hid=10844</image>
<chaine_id>0</chaine_id>
<chaine></chaine>
<chaine_image>http://img.webmastravel.net/hotel/0.gif</chaine_image>
<voyagistes>
<offre>
<voyagiste_id>6</voyagiste_id>
<voyagiste>HotelClub</voyagiste>
<voyagiste_image>http://img.webmastravel.net/voyagistes/6.gif</voyagiste_image>
<url>http://mb.webmastravel.net/hgo2.php?a=11601&b=6&c=1047</url>
<prix>0</prix>
</offre>
</voyagistes>
</hotel>
Je le lis comme cela :
- Code: Tout sélectionner
$bibliotheque = simplexml_load_file('wmt_hotels.xml');
foreach ($bibliotheque->hotel as $hotel)
{
$hotel_id = utf8_decode($hotel->hotel_id);
$hotel_nom = utf8_decode($hotel->hotel_nom);
$cp = utf8_decode($hotel->cp);
$departement = utf8_decode($hotel->departement);
$ville = utf8_decode($hotel->ville);
$pays = utf8_decode($hotel->pays);
$description = utf8_decode($hotel->description);
$etoiles = utf8_decode($hotel->etoiles);
$chambres = utf8_decode($hotel->chambres);
$image = utf8_decode($hotel->image);
$chaine = utf8_decode($hotel->chaine);
$hotel_id = mysql_real_escape_string($hotel_id);
$hotel_nom = mysql_real_escape_string($hotel_nom);
$cp = mysql_real_escape_string($cp);
$departement = mysql_real_escape_string($departement);
$ville = mysql_real_escape_string($ville);
$pays = mysql_real_escape_string($pays);
$description = mysql_real_escape_string($description);
$etoiles = mysql_real_escape_string($etoiles);
$chambres = mysql_real_escape_string($chambres);
$image = mysql_real_escape_string($image);
$chaine = mysql_real_escape_string($chaine);
.....
Mais voila lors de l'insertion dans mysql (sous wamp) le problème des accents n'est pas réglé du tout .
Du moins ca fonctionne tant que les éléments du flux ne sont pas dans les balises CDATA .
J'ai tt essayé mais rien a faire , c'est comme si UTF8_decode etait ignoré .
- max6
- WRInaute discret

- Messages: 168
- Inscription: 18 Mai 2003
Eh bien merci mais ca ne fonctionne pas malgré tout .
J'ai fais un test , j'ai crée un fichier vierge et j'ai mis dedans :
Tout va bien donc .
Mais quand j'intégre ca a mon code XML comme ceci :
Et bien ca ne change rien , seul les champs qui ne sont pas dans CDATA sont traités , Les champs contenu dans CDATA ignore cette fonction sauf
mysql_real_escape_string qui est utilisé .
J'ai du mal a voir ce qui cloche
J'ai fais un test , j'ai crée un fichier vierge et j'ai mis dedans :
- Code: Tout sélectionner
$a = "L'hôtel";
echo html_entity_decode($a);
Affiche L'hôtel
Tout va bien donc .
Mais quand j'intégre ca a mon code XML comme ceci :
- Code: Tout sélectionner
$hotel_id = html_entity_decode($hotel_id,ENT_QUOTES,"ISO-8859-1");
$hotel_nom = html_entity_decode($hotel_nom,ENT_QUOTES,"ISO-8859-1");
$cp = html_entity_decode($cp,ENT_QUOTES,"ISO-8859-1");
$departement = html_entity_decode($departement,ENT_QUOTES,"ISO-8859-1");
$ville = html_entity_decode($ville,ENT_QUOTES,"ISO-8859-1");
$pays = html_entity_decode($pays,ENT_QUOTES,"ISO-8859-1");
$description = html_entity_decode($description,ENT_QUOTES,"ISO-8859-1");
$etoiles = html_entity_decode($etoiles,ENT_QUOTES,"ISO-8859-1");
$chambres = html_entity_decode($chambres,ENT_QUOTES,"ISO-8859-1");
$image = html_entity_decode($image,ENT_QUOTES,"ISO-8859-1");
$chaine = html_entity_decode($chaine,ENT_QUOTES,"ISO-8859-1");
Et bien ca ne change rien , seul les champs qui ne sont pas dans CDATA sont traités , Les champs contenu dans CDATA ignore cette fonction sauf
mysql_real_escape_string qui est utilisé .
J'ai du mal a voir ce qui cloche
4 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Comment déterminer si un flux XML est codé en UTF8
- Problème de fou avec parsage de flux xml traded*** et encodage utf8 en php
- CDATA dans XML ne fonctionne pas
- Flux RSS sous IE avec balise <![CDATA[ ]]>
- Comment désindexer un flux rss (le flux xml) ?
- flux xml
- Flux XML / RSS
- flux XML et référencement
- Flux xml et image
- Flux xml programme TV
- Google Pack s'enrichit de 2 nouveaux logiciels gratuits
- Un (RSS) pour tous (les blogs officiels de Google)
- Google Enterprise a son blog
- Intégrer facilement un flux RSS externe
- Annuaire WRI : intégration des flux XML des inscrits
- Les albums web Picasa passent à 1 Go de stockage
- Le blog de Google Analytics
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
Consultez la description détaillée des produits ou services de Google suivants : API Google Checkout
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

