J'ai besoin de parser des fichiers XML pour remplir une base de données mysql.
Dans mon fichier XML j'ai une balise qui peut contenir jusqu'à quelques phrases avec parfois du html introduit...
Code :
- <EventText>
- À la 14e minute, <a href="PlayerDetails.asp?playerID=56081022">Marc Jaeger</a> de FCGB s'écroula à la limite de la surface de réparation. L'arbitre donna toutefois un carton jaune à <a href="PlayerDetails.asp?playerID=56081022">Marc Jaeger</a> pour simulation.
- </EventText>
|
Voilà comment je m'y prend pour parser en php:
Code :
- function startElement($analyseur, $nom_element, $tab_attributs) { // je met à vrai une variable en fonction de $nom_element}
- function characterData($analyseur, $data) { // selon la balise ouverte je construit mes requêtes}
- function endElement($analyseur, $nom_element) { // rien pour le moment}
- $parser = xml_parser_create();
- xml_set_element_handler($parser, "startElement", "endElement" );
- xml_set_character_data_handler($parser, "characterData" );
- $filehandler = fopen($isoFile, "r" );
- while($data = fread($filehandler, 4096)){
- xml_parse($parser, $data, feof($filehandler));
- }
- fclose($filehandler);
- xml_parser_free($parser);
|
Depuis la fonction characterData je travaille avec la variable $data. Seulement dans le cas où le texte contient des balises HTML, la variable ne contient pas intégralement le texte entre les balises <EventText> et </EventText> par exemple. Dans l'exemple donné, j'obtiens "À la 14e minute, " et rien de plus.
Comment pourrais-je faire pour obtenir tout le texte entre mes deux balises XML et ignorer les éventuelles balises HTML ?
Message édité par Pwill le 01-01-2007 à 23:01:58