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

  FORUM HardWare.fr
  Programmation
  PHP

  Parser du XML en PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parser du XML en PHP

n°1493762
fusion_sad​am
:D
Posté le 19-12-2006 à 20:23:05  profilanswer
 

Bounjour, j'aimerais parcourir un fichier xml en php afin de remplir ma base de donnée
 
voici le paseur que j'ai fais, il est vraiment le plus simple possible, mais ca marche (du moins sur mon fichier ca marche)
 

Code :
  1. function element_debut($parseur,$nom_elt, $attrs){
  2. echo " $nom_elt ";}
  3. function element_contenu($parseur,$contenu_elt){
  4. echo " $contenu_elt ";}
  5. function element_fin($parseur,$nom_elt){
  6. echo "<br/>";}
  7. $parseur=xml_parser_create();
  8. xml_set_element_handler($parseur, "element_debut", "element_fin" );
  9. xml_set_character_data_handler($parseur, "element_contenu" );
  10. $fic=fopen("Test_parse.aspx", "r" );
  11. while ($don=fread($fic,4096))
  12. {
  13.  xml_parse($parseur, $don);
  14. }
  15. fclose($fic);
  16. xml_parser_free($parseur);


 
le fichier : http://diserv.univ-lyon2.fr/~rlegr [...] parse.aspx
 
Je souhaiterais donc simplement pouvoir récuperer le contenu des balises <title>  <link> et <description>
mais je ne comprend vraiment pas comment faire, je pense pas que ce soir bien compliquer même si je suis un débutant, mais tout les parseurs que j'ai récupere sont bien trop complexe pour moi.
 
 :hello:  
 

mood
Publicité
Posté le 19-12-2006 à 20:23:05  profilanswer
 

n°1493835
Je@nb
Kindly give dime
Posté le 19-12-2006 à 23:45:44  profilanswer
 

fait avec simplexml tu verras c'est encore plus simple

n°1493874
chani_t
From Dune
Posté le 20-12-2006 à 08:30:19  profilanswer
 

pluzun.. simplexml est vraiment bien sympathique.. ;)

n°1494349
fusion_sad​am
:D
Posté le 20-12-2006 à 15:49:16  profilanswer
 

impossible, le serveur est en PHP Version 4.3.8 et simplexml est disponible que en PHP5
 
aparement il faut que j'utilise la fonction xml_parse_into_struct() ...

n°1494353
nORKy
Grmmph...
Posté le 20-12-2006 à 15:55:52  profilanswer
 

Et tu es obligé d'utilise du XML ? Y'a d'autre format comme ini ou bien YAML... Voir même du PHP directement avec des array (suffit de bien présenté pour que ca soit clair, mais ca peut pas être moins clair que du XML)

n°1494354
chani_t
From Dune
Posté le 20-12-2006 à 15:58:41  profilanswer
 

arf en effet, pas de bol.

n°1494355
fusion_sad​am
:D
Posté le 20-12-2006 à 16:00:42  profilanswer
 

ben, le but est de remplir ma BD a partir d'un flux rss !

n°1494361
nORKy
Grmmph...
Posté le 20-12-2006 à 16:08:51  profilanswer
 

arf, forcément... la, t'es bloqué

n°1494364
Je@nb
Kindly give dime
Posté le 20-12-2006 à 16:10:37  profilanswer
 

il y a des lib rss déjà faites sinon comme magpie rss

n°1494367
fusion_sad​am
:D
Posté le 20-12-2006 à 16:14:22  profilanswer
 

bon, j'avance, j'avais pas encore regardé la suite de mon cour ^^
 

Code :
  1. // lecture du document dans la variable $xml
  2. $xml="";
  3. $fic=fopen("Test_parse.aspx", "r" );
  4. while($don=fread($fic,256))$xml.=$don;
  5. fclose($fic);
  6. // Analyse du document, XML, résultat dans les tableaux $valeurs et $index
  7. $parseur=xml_parser_create();
  8. xml_parse_into_struct($parseur,$xml,$valeurs,$index);
  9. xml_parser_free($parseur);
  10. ?>


 
une boucle devrait me permettre de récuperer les infos souhaitées qui sont dans $valeurs
 

mood
Publicité
Posté le 20-12-2006 à 16:14:22  profilanswer
 

n°1494369
fusion_sad​am
:D
Posté le 20-12-2006 à 16:17:38  profilanswer
 

Je@nb a écrit :

il y a des lib rss déjà faites sinon comme magpie rss


 
non je veux faire mon propre parseur, j'ai un site web à faire avec un dossier a rendre dans le cadre de mes cours, c'est important que ce soit moi qui ai travaillé et compris ce que j'ai fais et que je sois capable de l'expliquer dans le dossier.

n°1494375
gizmo
Posté le 20-12-2006 à 16:30:07  profilanswer
 

Ah, et le fait que tu aies appris a ne pas reinventer la roue, ca ne rapporte pas quelque points? :heink:


Message édité par gizmo le 20-12-2006 à 16:30:24
n°1494395
fusion_sad​am
:D
Posté le 20-12-2006 à 17:01:11  profilanswer
 

rien à voir,on à des cours, on doit être capable de les apprendre, de les comprendre et de les appliquer
 
sinon 95% des cours serais completement inutile, autant faire un skyblog et dire, oui je sais faire un site web !

n°1494397
gizmo
Posté le 20-12-2006 à 17:02:59  profilanswer
 

ok, encore un qui n'a rien compris au developpement.

n°1494438
Je@nb
Kindly give dime
Posté le 20-12-2006 à 17:52:59  profilanswer
 

Sauf que ton truc de parsage xml c'est vraiment de la préhistoire.
Pareil pour ta lecture de fichier où tu fais en moins bien ce que fait file_get_contents en une ligne

n°1494447
fusion_sad​am
:D
Posté le 20-12-2006 à 18:08:08  profilanswer
 

gizmo a écrit :

ok, encore un qui n'a rien compris au developpement.


ben developpe ...
 

Je@nb a écrit :

Sauf que ton truc de parsage xml c'est vraiment de la préhistoire.
Pareil pour ta lecture de fichier où tu fais en moins bien ce que fait file_get_contents en une ligne


 
c'est pas bien important, j'aimerais bien terminer ec truc rapidement, j'arrive maintenant a affciher tout ce qu'il ya dans $valeurs
mais j'arrive pas à tester ces elements
 
par exemple je veux afficher que les tag TITLE et afficher son contenu :
 

Code :
  1. echo "<table><th>tags</th><th>value</th></tr>\n";
  2. for ($i=0; $i<count($valeurs); $i++) {
  3.  if ($valeurs[$i]["tag"]="TITLE" ) {
  4.    echo "<tr>
  5.     <td>".$valeurs[$i]["tag"]."</td>
  6.     <td>".$valeurs[$i]["value"]."</td></tr>\n";
  7.     }
  8. }
  9. echo "<table>\n";


 
ya un truc qui pas dans ce code ?

n°1494554
0x90
Posté le 20-12-2006 à 21:30:38  profilanswer
 

gizmo a écrit :

ok, encore un qui n'a rien compris au developpement.


 
Le principe de réutilisation est bon, surtout dans le cadre professionel, mais dans le cadre de l'apprentissage ça ne s'applique pas, le but de ce qu'il fait (enfin je suppose) est d'apprendre à faire du php, pas de faire un parseur de RSS, le parseur de RSS n'est qu'un moyen, un support.
Tout comme les rédactions à l'école servent à apprendre à écrire et à bien écrire, ce dont tu parle le prof, le correcteur ou qui que ce soit d'autre s'en contrefout totalement. _Ensuite_ quand tu saura écrire/programmer, et que tu aura un but, un produit à créer, et que la programmation ne sera qu'un moyen d'y arriver, la réutilisation s'applique.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1495226
fusion_sad​am
:D
Posté le 22-12-2006 à 11:06:31  profilanswer
 

mreci 0x90, faut pas confondre le travail et les étude, les profs contrairement à un client (enfin les notres) ne jugent pas sur le résultat final du site, mais bien sur le travail effectué
alors permet moi de te répondre : ok, encore un qui a rien compris aux études
 
sinon, j'ai quand même fini pas trouvé ma grosse erreur que tellement elle grosse personne ne l'a vue : '==' et pas '=' pour comparer
 
 
Voici donc quand même mon code final pour ceux que ca interesse
 

Code :
  1. $xml="";
  2. $fic=fopen("http://www.bourse-academie.com/rsscac40.aspx", "r" );
  3. while($don=fread($fic,256))$xml.=$don;
  4. fclose($fic);
  5. $parseur=xml_parser_create();
  6. xml_parse_into_struct($parseur,$xml,$valeurs,$index);
  7. xml_parser_free($parseur);
  8.   for ($i=10; $i<count($valeurs); $i++) {
  9.    if ($valeurs[$i]["tag"]=="TITLE" ) {$titre=$valeurs[$i]["value"];}
  10.    if ($valeurs[$i]["tag"]=="LINK" ) {$link=$valeurs[$i]["value"];}
  11.    if ($valeurs[$i]["tag"]=="DESCRIPTION" ) {$desc=$valeurs[$i]["value"];
  12.     $desc = str_replace(",",".",$desc);
  13.     $desc=number_format($desc, 3, '.', ' ');
  14.     f_maj_tab_action($titre,$link,$desc);}
  15.   }


 
 
 :hello:


Message édité par fusion_sadam le 22-12-2006 à 11:07:00
n°1495335
gizmo
Posté le 22-12-2006 à 13:44:06  profilanswer
 

Desole, mais moi, dans mes etudes, on m'a appris deux choses qui continuent de me servir tous les jours:
 
- Etre le plus feneant possible.
- Use the right tool to do the right job.
 
Dans ce cas-ci, tu bafoues ces deux regles, donc bon...

n°1495347
chani_t
From Dune
Posté le 22-12-2006 à 14:20:58  profilanswer
 

gizmo a écrit :

Desole, mais moi, dans mes etudes, on m'a appris deux choses qui continuent de me servir tous les jours:
 
- Etre le plus feneant possible.
- Use the right tool to do the right job.
 
Dans ce cas-ci, tu bafoues ces deux regles, donc bon...


 
pluzun...
 
si les profs ont envis de se faire le joli petit parseur laisse les faire, mais je ne pense pas que ton prof t'ais demandé de te taper un parseur à faire... si ?
sinon, il t'aura demandé de réaliser une fonction avec ton code, donc, afin de réaliser cette fonction libre à toi d'utiliser des bibliothéques déjà existante.
 
Le but de l'école n'est pas forcément de t'apprendre à réinventer la roue, mais plus de savoir ou chercher les infos qui te seront nécessaire pour mener à bien tes projets.. (enfin moi je vois les choses sous cet angle..)

n°1495373
masklinn
í dag viðrar vel til loftárása
Posté le 22-12-2006 à 15:27:30  profilanswer
 

Je@nb a écrit :

Sauf que ton truc de parsage xml c'est vraiment de la préhistoire.


Pas exactement en fait, créer un parser XML correct et de qualité est hautement non trivial, la norme XML étant extrèmement complexe.
 
Surtout quand tu commences à te lancer dans des parsers validants, à gérer les doctypes et autre schémas, etc...
 
Par exemple ElementTree (considérée comme la meilleure lib de parsing XML actuelle en Python, sachant que c'est uniquement un parser/Serialise, pas de gestion de XPATH, XSL ou autres joyeusetés) fait un bon 1100 lignes de code Python, et la réimplémentation en C (pour gagner en vitesse quand nécessaire) représente 13kloc de C et 200 lignes de Python... sans compter le code d'Expat sur lequel cElementTree est basée.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1495899
supermofo
Hello World !
Posté le 25-12-2006 à 14:46:39  profilanswer
 

masklinn a écrit :

Pas exactement en fait, créer un parser XML correct et de qualité est hautement non trivial, la norme XML étant extrèmement complexe.

 

Surtout quand tu commences à te lancer dans des parsers validants, à gérer les doctypes et autre schémas, etc...

 

Par exemple ElementTree (considérée comme la meilleure lib de parsing XML actuelle en Python, sachant que c'est uniquement un parser/Serialise, pas de gestion de XPATH, XSL ou autres joyeusetés) fait un bon 1100 lignes de code Python, et la réimplémentation en C (pour gagner en vitesse quand nécessaire) représente 13kloc de C et 200 lignes de Python... sans compter le code d'Expat sur lequel cElementTree est basée.

 


 


Autant la fermer que de sortir des conneries comme ça. N'importe quel abruti peut faire une recherche google et sortir les memes infos.  :fou:

  

Liens intéressant:

 

-http://magpierss.sourceforge.net/
-http://sourceforge.net/projects/snoopy/
-http://www.regular-expressions.info/

  



Message édité par supermofo le 25-12-2006 à 14:58:45
n°1495981
craps_youp​la
Posté le 26-12-2006 à 09:13:20  profilanswer
 

on nage en plein délire.
 
-> http://pear.php.net/package/XML_RSS

mood
Publicité
Posté le   profilanswer
 


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

  Parser du XML en PHP

 

Sujets relatifs
parser d'expression dans un logiciel[PHP] créer une possibilté d'identification SQL/PHP
[PHP/MySQL] Questions de sécuritéParser un fichier XML en PHP
[RSS] fichier XML ok mais faut-il obligatoirement le parser avec PHP?[xml+PHP] parser xml avec php, petit pb: ça n'affiche que des chiffres
PHP : XML parser : plante sur les accents ![PHP-XML] Parser une variable à la place d'un fichier?
[PHP] Parser XML[PHP] utiliser le parser XML
Plus de sujets relatifs à : Parser du XML en PHP


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