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

  FORUM HardWare.fr
  Programmation
  PHP

  Parser un fichier XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parser un fichier XML

n°864806
SatanKoRn
J'T'A'M !
Posté le 05-10-2004 à 09:12:59  profilanswer
 

Bonjour,
 
je souhaiterais parser un fichier XML avec PHP. Mais je ne veux pas utiliser le parser de PHP, ni une librairie quelconque. Pourquoi ? Parce que : http://php.weblogs.com/2004/02/11#a3290.
 
Je veux donc partir du côté des expressions régulières... J'ai passé un bon moment hier à chercher entre les fonctions preg_match_all, spliti et eregi, mais je n'y parviens pas...
 
Voici le début de mon code :

Code :
  1. <?php
  2. $file = "donnees.xml" ;
  3. if (!($fp=fopen($file, "r" ))) {
  4. die ("Impossible de lire le fichier XML" );
  5. }
  6. $data=fread($fp,filesize($file));
  7. fclose($fp);
  8. ?>


 
Si quelqu'un peut m'apporter un peu d'aide, ça serait sympa...  :sweat:  


---------------
Matt
mood
Publicité
Posté le 05-10-2004 à 09:12:59  profilanswer
 

n°864835
SatanKoRn
J'T'A'M !
Posté le 05-10-2004 à 10:04:34  profilanswer
 

En fait, j'arrive pas à utiliser ces fonctions...
Exemple de fichier XML :  

<balise>
  <coucou>
    <nom>Jean</nom>
  </coucou>
  <coucou>
    <nom>Pierre</nom>
  </coucou>
</balise>


 
Je voudrais séparer les <coucou>...</coucou> à chaque fois (que ca me retourne ça dans un tableau ou sous forme d'objet, c'est égal...)


Message édité par SatanKoRn le 05-10-2004 à 10:05:45

---------------
Matt
n°867017
SatanKoRn
J'T'A'M !
Posté le 07-10-2004 à 13:20:27  profilanswer
 

au cas où ça intéresserait quelqu'un :

Code :
  1. $data = substr($data, 8);
  2. // enlever le <balise>
  3. $data = substr($data, 0, -9);
  4. // enlever le </balise>
  5. preg_match_all("|<coucou>(.*)</coucou>|U", "$data", $out);
  6. // $out[0][0] renvoie : <coucou><nom>Jean></nom></coucou>
  7. // $out[0][1] renvoie : <coucou><nom>Pierre</nom></coucou>
  8. // et
  9. // $out[1][0] renvoie : <nom>Jean</nom>
  10. // $out[1][1] renvoie : <nom>Pierre</nom>


Merci quand même  ;)


Message édité par SatanKoRn le 07-10-2004 à 13:22:19

---------------
Matt
n°867170
KrisCool
“Verbeux„
Posté le 07-10-2004 à 16:10:54  profilanswer
 

Commence par regarder si les extensions XML sont activees sur ton hebergement (renseigne toi aupres de ton hebergeur ou utilise la fonction phpinfo()).
 
Il existe des fonctions de traitement du XML qui permettent d'acceder a des documents xml, a savoir : xml-rpc, dom-xml, etc.
 
http://fr2.php.net/manual/fr/ref.domxml.php
http://fr2.php.net/manual/fr/ref.xml.php
http://fr2.php.net/manual/fr/ref.xmlrpc.php
 
 
Essayer de le refaire a la main n'est pas une bonne solution : ca a toutes les chances d'etre plus long a faire et d'etre moins performant (ou moins flexible).

n°867174
SatanKoRn
J'T'A'M !
Posté le 07-10-2004 à 16:13:14  profilanswer
 

Justement, j'ai lu que c'était plus rapide avec les expressions régulières, mais bon, ça galère pas mal, alors j'aurai peut-être pas le choix...
Pour l'instant, je suis sur mon propre PC, donc les extensions XML sont activées, merci! :)


---------------
Matt
n°867250
pascal_
Posté le 07-10-2004 à 17:54:52  profilanswer
 

Te base pas que sur ce test. Ça à l'air un peu bancal.
 
regex et explode vont plus vite car ce n'est pas du "vrai" parse. Les autres te détecte toutes les balises et vérifie la conformité xml. D'ailleurs, si ça se peut, ce qui est le plus lent c'est quand les librairies appellent tes fonctions php de traitement.  
Il aurait fallu tester sur de gros fichier pour voir ce qui se passe (surtout avec explode)
 
De toute façon, même si le test est vrai et que tu as à traité que disons 3 petits fichiers, ça va mettre:
- regex : 0,00015 s
- sax (le plus lent dans le test):   0,01512 s
 
Tu verras vraiment la différence ?

n°867332
SatanKoRn
J'T'A'M !
Posté le 07-10-2004 à 19:20:32  profilanswer
 

pascal_ a écrit :

Te base pas que sur ce test. Ça à l'air un peu bancal.
 
regex et explode vont plus vite car ce n'est pas du "vrai" parse. Les autres te détecte toutes les balises et vérifie la conformité xml. D'ailleurs, si ça se peut, ce qui est le plus lent c'est quand les librairies appellent tes fonctions php de traitement.  
Il aurait fallu tester sur de gros fichier pour voir ce qui se passe (surtout avec explode)
 
De toute façon, même si le test est vrai et que tu as à traité que disons 3 petits fichiers, ça va mettre:
- regex : 0,00015 s
- sax (le plus lent dans le test):   0,01512 s
 
Tu verras vraiment la différence ?


très bonne remarque...  :jap:  
aurais-tu un parseur à me proposer alors ? à part ceux qui sont intégrés à PHP si possible  :D  


---------------
Matt
n°867335
Profil sup​primé
Posté le 07-10-2004 à 19:23:18  answer
 

me suis toujours dit qu'il me faudrait mon parser perso pour mes fichier perso

n°867345
pascal_
Posté le 07-10-2004 à 19:39:34  profilanswer
 

SatanKoRn a écrit :

très bonne remarque...  :jap:  
aurais-tu un parseur à me proposer alors ? à part ceux qui sont intégrés à PHP si possible  :D


 
Ben non  :whistle:  
 
Pourquoi tu ne veux pas utiliser ceux intégrés à PHP ?


Message édité par pascal_ le 07-10-2004 à 19:40:34
n°867362
SatanKoRn
J'T'A'M !
Posté le 07-10-2004 à 20:03:08  profilanswer
 

chacal_one333 : bon courage :D
 
pascal_ : parce qu'il est en mode expérimental, non ?


---------------
Matt
mood
Publicité
Posté le 07-10-2004 à 20:03:08  profilanswer
 

n°872599
gchauvel
Posté le 13-10-2004 à 18:50:18  profilanswer
 

Comment parser un fichier xml en langage C

n°873091
SatanKoRn
J'T'A'M !
Posté le 14-10-2004 à 13:44:23  profilanswer
 

quel rapport avec le PHP ?


---------------
Matt
n°874655
Berceker U​nited
PSN : berceker_united
Posté le 16-10-2004 à 09:07:33  profilanswer
 

pascal_ a écrit :

Ben non  :whistle:  
 
Pourquoi tu ne veux pas utiliser ceux intégrés à PHP ?


Parce que si l'hebergeur qu'il préfère ne propose pas l'extension ben il risque d'être marron mais bon , ça m'étonnerais qu'un hebergeur n'ait pas compilé les différentes extention pour traiter le xml.

n°874902
lkolrn
&lt;comment ça marche?&gt;
Posté le 16-10-2004 à 21:28:31  profilanswer
 

gchauvel a écrit :

Comment parser un fichier xml en langage C


http://www.xmlsoft.org/


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

  Parser un fichier XML

 

Sujets relatifs
Un programme qui trie ce qu'il y a dans le fichier txtParser une page web en php
comment ouvrir un fichier php[JAVA] generer un fichier bat windows depuis du code java pb encoding
Comment inclure un fichier word ds du html?insertion fichier existant + version windows
pb upload fichier + insertion base[Java-XML] Arret de lecture d'un fichier XML avec un parser SAX
[java] parser XML : fichier XML dans un jar ou non....[PHP-XML] Parser une variable à la place d'un fichier?
Plus de sujets relatifs à : Parser un fichier XML


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