[résolu]SVP urgent: comment lire un fichier XML contenant des balises HTML

Petit nouveau ! | 3 Messages

06 mars 2008, 12:42

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.
Modifié en dernier par mjmica le 06 mars 2008, 17:36, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 mars 2008, 13:53

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

06 mars 2008, 15:23

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: