Porblème simplexml_load_file et &

cs_crow Messages postés 5 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 10 décembre 2008 - 8 déc. 2008 à 16:37
cs_crow Messages postés 5 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 10 décembre 2008 - 10 déc. 2008 à 10:13
Bonjour à tous,

Voici mon problème. Je dois traiter des fichiers xml en automatique pour inserer dans une base mysql. J'ai donc créée un script php pour faire ce travail, mais j'ai un soucis sur la lecture du fichier xml lorsqu'il y a un & dans un champ.

Voici le code que j'utilise pour tester la lecture du fichier:

<?php
if (file_exists('fichier.xml')) {
$listing = simplexml_load_file('fichier.xml');
foreach ($listing->CLIENT as $client){
print "Client {$client['code']}
\n";
foreach ($client->PRODUIT as $produit){
print "Code Produit : {$produit['code']}
\n";
print "Commande : {$produit->COMMANDE}
\n";
print "Designation : {$produit->DESIGNATION}
\n";
print "Quantite : {$produit->QUANTITE}
\n";
print "Prix : {$produit->PRIX}

\n";
}
}
}
?>

Si dans la partie Designation il y a un & un message d'erreur s'affiche. Le problème c'est que je ne sais pas comment faire pour remplacer les & par & dans mon fichier d'origine avant de faire ma manip.

Est-ce que quelqu'un peut m'indiquer une solution ??

Merci d'avance.

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
9 déc. 2008 à 19:08
Hello,

& ou &amp;, ça ne changera pas grand chose : au cas où tu ne l'as pas remarqué, dans "&amps;", il y a aussi "&"...;-)
De plus, XML ne comprends pas les entités HTML sans une DTD ou un schéma les définissant.
La solution facile : mettre tes textNodes dans des CDATA.
0
cs_crow Messages postés 5 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 10 décembre 2008
10 déc. 2008 à 10:13
Bonjour,

& ou & change quelque chose. J'ai fait les tests nécessaires avant de poster ce message.

Pour info, les fichiers xml sont posés sur un serveur par un system que je ne gère pas. C'est pour ça que je ne peux pas utiliser les CDATA...

Je suis donc toujours à la recherche d'une solution pour modiifer dans les fichiers xml les & par & à moins que quelqu'un me propose d'utiliser un parseur différent du simplexml_load_file.
0
Rejoignez-nous