Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2669 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Analyse d'un fichier XML: confusion balises xml/html

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Analyse d'un fichier XML: confusion balises xml/html

n°1497756
Pwill
Deux fois Né
Posté le 01-01-2007 à 23:01:10  profilanswer
 

:hello:
 
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 :
  1. <EventText>
  2. À 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.&nbsp;
  3. </EventText>

 
 
Voilà comment je m'y prend pour parser en php:
 

Code :
  1. function startElement($analyseur, $nom_element, $tab_attributs) { // je met à vrai une variable en fonction de $nom_element}
  2. function characterData($analyseur, $data) { // selon la balise ouverte je construit mes requêtes}
  3. function endElement($analyseur, $nom_element) { // rien pour le moment}
  4. $parser = xml_parser_create();
  5. xml_set_element_handler($parser, "startElement", "endElement" );
  6. xml_set_character_data_handler($parser, "characterData" );
  7. $filehandler = fopen($isoFile, "r" );
  8. while($data = fread($filehandler, 4096)){
  9.   xml_parse($parser, $data, feof($filehandler));
  10. }
  11. fclose($filehandler);
  12. 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
mood
Publicité
Posté le 01-01-2007 à 23:01:10  profilanswer
 

n°1497762
gizmo
Posté le 01-01-2007 à 23:32:15  profilanswer
 

C'est ton XML qui est foireux. Si tu veux introduire, au sein d'une balise, un texte libre qui ne doit pas être interprété comme du XML, tu dois echapper proprement tes tags en les remplaçant par &lt; et &gt;


Message édité par gizmo le 01-01-2007 à 23:34:08
n°1497804
Pwill
Deux fois Né
Posté le 02-01-2007 à 10:46:08  profilanswer
 

Ah mince ! Et ca j'y peux rien, je bricole à partir du xml que fournit un site et ils ont stoppé le support pour les développeurs. Merci pour la précision.
 
Une idée tout de même... si je traite la balise HTML comme une balise XML, je dois pouvoir récupérer le texte entre mes deux balises (le texte d'un lien dans l'exemple).  
Est-ce que vous voyez  un moyen de récupérer le texte entre les balises </a> et </EventText> ? Ce bout de texte ne sera jamais dans le $data de ma fonction characterData, je me trompe ?

n°1497812
FlorentG
Unité de Masse
Posté le 02-01-2007 à 11:07:13  profilanswer
 

Quelle version de PHP ?

n°1497829
Pwill
Deux fois Né
Posté le 02-01-2007 à 11:29:05  profilanswer
 

C'est du php 4.3.10 parce que je ne me suis pas fatigué, j'ai installé EasyPHP 1.8 [:amandine75011]
Je peux toujours tester la version beta 1 de EasyPHP 2 s'il faut du php 5 :D

n°1497831
FlorentG
Unité de Masse
Posté le 02-01-2007 à 11:32:19  profilanswer
 

Ou passer à wampserver pour du 5...

n°1497840
Pwill
Deux fois Né
Posté le 02-01-2007 à 11:56:06  profilanswer
 

Euh oui pourquoi pas, je ne connais pas wampserver, je vais jetter un oeil :)
 
Cela dit, mon bricolage, ce n'est qu'un tout petit script qui ne fonctionne qu'en local et je n'ai pas spécialement envie de m'embêter en ce moment.  
Ma moulinette maison... il faudra que je la ré implémente lorsque le support développeur (ce qui permet de récupérer les données proprement en toute légalité) du site sera à nouveaux ouvert. Je ne sais pas quand, ni dans quelles circonstances...  
Donc je n'ai pour le moment pas accès aux données via requêtes sur le serveur.
 
C'est du bricolage pour patienter car, depuis le site en question, j'affiche (quand c'est possible) du XML via mon navigateur que j'enregistre à la main.  
Ceci pour récupérer la 1ère partie des données qui m'intéressent, et je récupère la 2nde partie (indispensable) via du copier coller de texte car elle n'est pas disponible sous forme XML...
 
Bref, j'attends de voir comment se présenteront les données avant de me lancer dans une implémentation sérieuse.
 
Pour en revenir à php5, quelle est l'idée qui t'amène à me faire passer à cette version ? Il y aurait un moyen de régler le problème rencontré?

n°1497841
FlorentG
Unité de Masse
Posté le 02-01-2007 à 11:58:30  profilanswer
 

C'est que l'API DOM est super [:dawak]

n°1497863
Pwill
Deux fois Né
Posté le 02-01-2007 à 12:29:42  profilanswer
 

C'est ok pour wampserver et l'API DOM. Ca me semble plus compliqué que l'API SAX mais l'investissement ne devrait pas être perdu, merci pour les infos :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Analyse d'un fichier XML: confusion balises xml/html

 

Sujets relatifs
Php Affichage ...Fichier de téléchargement?
Créer un fichier excel avec des checkbox en php(PHP/PEAR)[PHP][RESOLU]Est-ce possible?
extraire données fichier texte vers BDD[PHP/SQL] Aide pour un site
Session en PHPScript PHP qui fusionne des fichiers
Un lien => 2 pages HTML 
Plus de sujets relatifs à : [PHP] Analyse d'un fichier XML: confusion balises xml/html


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR