Page 1 sur 1

[résolu]SVP urgent: comment lire un fichier XML contenant de

Posté : 06 mars 2008, 12:42
par mjmica
bjr,

je lis à distance un fichier XML contenant des balises HTML, ex:

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-1"?> <news> <rubrique>Sociétés</rubrique> <titre>Avis du Haut conseil au commissariat aux comptes (HCCC) relatif à une succession de missions</titre> <chapo>xxxxxxxxxx <A HREF="http://www.site.fr/lbClicLXB.html?LXB=X0489AET" target="SOURCE"><SPAN CLASS="lxblien">N° : X0489AET</SPAN></A>) a identifié des </chapo> <date_affichage>06/03/2008</date_affichage> <news_num>313578</news_num> </news>
Cette lecture avec simplexml:

Code : Tout sélectionner

$xml_actu = simplexml_load_file($file_actu);
retourne l'erreur:
simplexml_load_file() [function.simplexml-load-file]:...parser error : Opening and ending tag mismatch: br line 9 and chapo in...

Cette lecture avec DOM:

Code : Tout sélectionner

$dom = new DomDocument(); $dom->load($file_actu);
retourne aussi l'erreur:
DOMDocument::load() [function.DOMDocument-load]: Opening and ending tag mismatch: br line 9 and chapo


Comment lire du XML contenant des balises HTML SVP ?
Merci pour vos réponses, c'est asse urgent...

serveur PHP5.

Posté : 06 mars 2008, 13:53
par @rthur
Bonjour,

As tu la main sur la génération du XML?
En effet c'est ce dernier qui est mal formé car un code HTML au sein d'un fichier XML doit impérativement être balisé par des tags CDATA justement pour éviter le problème que tu rencontres.

+ d'infos ici:
http://www.journaldunet.com/developpeur ... data.shtml

Posté : 06 mars 2008, 15:23
par mjmica
merci beaucoup @rthur pour ta réponse.

Voilà donc comment j'ai procédé pour ajouter l'attribut CDATA "à la volé" :

Code : Tout sélectionner

$file_news = "http://site.fr/fichie.xml"; $xml = file_get_contents($file_news); //ajout des CDATA $xml = str_replace("<chapo>", "<chapo><![CDATA[", $xml); $xml = str_replace("</chapo>", "]]></chapo>", $xml); $xml_news = simplexml_load_string($xml );
Merci encore @rthur, tu m'as mis sur la bonne voie :lol: