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

  FORUM HardWare.fr
  Programmation
  PHP

  Php et parser xml

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Php et parser xml

n°1195943
Mush22
Le temps se chargera du reste.
Posté le 09-09-2005 à 14:08:02  profilanswer
 

Bonjour, voici le code que j'utilise pour parser un flux xml :

Code :
  1. <? function parser(){
  2. $url = "h***************************xml.php";
  3. $donnees="";
  4. $rawitems="";
  5. $fichier_xml = $url;
  6. $nombre_limite = 10;
  7. $file = fopen($fichier_xml,"r" );
  8. if($file){
  9.  $raw = fread($file,32000);
  10.  fclose($file);
  11.  if(eregi("<item>(.*)</item>",$raw,$rawitems)){
  12.   $items = explode("<item>", $rawitems[0]);
  13.   $nb = count($items);
  14.   $maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite;
  15.   for ($i=0;$i<$maximum;$i++){
  16.    eregi("<id>(.*)</id>",$items[$i+1], $id);
  17.    eregi("<nom_video>(.*)</nom_video>",$items[$i+1], $nom_video);
  18.    eregi("<scene>(.*)</scene>",$items[$i+1], $scene);
  19.    eregi("<date>(.*)</date>",$items[$i+1], $date);
  20.    $donnees=$donnees."Id : ".$id[1].", Nom : ".$petite_description[1]."<br />";
  21.   }
  22.  }
  23. }
  24. $fichier="./inc.php";
  25. $file= fopen($fichier, "w" );
  26. fwrite($file, $donnees);
  27. fclose($file);
  28. }
  29. parser();


 
Le xml est valide, mais je n'ai que deux résultats d'affichés. Si j'enleve le nombre maximal d'elements affichés, j'ai tous les elements, mais avec les valeurs du 2eme :
1 - nom du 1
2 - nom du 2
3 - nom du 2
4 - nom du 2  
5 - nom du 2  
ainsi de suite.  
 
QU'est-ce que ne va pas?
Merci.

mood
Publicité
Posté le 09-09-2005 à 14:08:02  profilanswer
 

n°1195954
esox_ch
Posté le 09-09-2005 à 14:13:18  profilanswer
 

Je peux savoir pourquoi tu utilises pas les fonction XML pour parser ton truc ? Au lieu de faire ca avec un systeme d'ereg qui donc risque de se crasher (comme il le fait) si tu foires une virgule quelque part?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1195955
Mush22
Le temps se chargera du reste.
Posté le 09-09-2005 à 14:15:58  profilanswer
 

Simplement parce que je ne connais pas les fonctions XML :)
Je sais bien que ce serait plus simple, mais le temps m'oblige a utiliser ce script, qui fonctionnait pas mal.

n°1195977
gatsusat
Posté le 09-09-2005 à 14:33:28  profilanswer
 

le temps tu l'aurais gagné largement avec les fonctions XML, et au mieux utilise DOM XML ca sort comme du ptit lait

n°1196035
Mush22
Le temps se chargera du reste.
Posté le 09-09-2005 à 15:22:01  profilanswer
 

Alors voila ce que j'ai :

Code :
  1. <?php
  2. $file = "*******************a/xml.php";
  3. function startElement($parser, $name, $attribs)
  4. {
  5.    echo "&lt;<font color=\"#0000cc\">$name</font>";
  6. }
  7. function endElement($parser, $name)
  8. {
  9.    echo "&lt;/<font color=\"#0000cc\">$name</font>&gt;";
  10. }
  11. function characterData($parser, $data)
  12. {
  13.    echo "<strong>$data</strong>";
  14. }
  15. function new_xml_parser($file)
  16. {
  17.    global $parser_file;
  18.    $xml_parser = xml_parser_create();
  19.    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
  20.    xml_set_element_handler($xml_parser, "startElement", "endElement" );
  21.    xml_set_character_data_handler($xml_parser, "characterData" );
  22.    if (!($fp = @fopen($file, "r" ))) {
  23.        return false;
  24.    }
  25.    if (!is_array($parser_file)) {
  26.        settype($parser_file, "array" );
  27.    }
  28.    $parser_file[$xml_parser] = $file;
  29.    return array($xml_parser, $fp);
  30. }
  31. if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
  32.    die("Impossible d'ouvrir le fichier XML" );
  33. }
  34. while ($data = fread($fp, 4096)) {
  35.    xml_parse($xml_parser, $data, feof($fp));
  36. }
  37. xml_parser_free($xml_parser);
  38. ?>


 
Je récupere les elements, qui sont affiché presque comme quand on lit un fichier xml avec son browser.
Mais j'en suis finalement au meme point qu'avec un fichier xml simple, des lors, je ne vois toujorus pas comment récuperer les données pour en faire ce que je veux.


Message édité par Mush22 le 09-09-2005 à 15:22:44

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

  Php et parser xml

 

Sujets relatifs
[PHP] Problème de parserParser RSS en PHP... un item ne passe pas !
[xml+PHP] parser xml avec php, petit pb: ça n'affiche que des chiffresParser une page web en php
[PHP] Parser du HTML : par où commencerPHP : XML parser : plante sur les accents !
[Perl][PHP] Parser VT100/VT220[PHP] Parser une page html
PhP ..parser une chaine de caractere ?[PHP-XML] Parser une variable à la place d'un fichier?
Plus de sujets relatifs à : Php et parser xml


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