[PHP-XML] je cherche à lire un fichier xml !

Résolu
astrocybernaute Messages postés 100 Statut Membre -  
astrocybernaute Messages postés 100 Statut Membre -
Bonjour,

voila je cherche a lire les donnés d'un fichier XML pour pouvoir les stocker dans une bdd
est ce que vous connaissez une librairie qui peut faire ca et que vous pouvez me guidez pour réussir ma mission svp?
ca fait deja une semaine que j'aurai du terminer cette étape :((
j'ai deja trouvé une mais je n'arribve pas à la faire marcher j'ai bcp d'erreur (http://ww1.insicdesigns.com
j'ai trouvé une autre mais c compliqué !! (https://www.php.net/manual/en/book.xmlreader.php et https://www.php.net/simplexml

je n'ai pas cp de temps et je bloque vrm..aidez moi
pas forcément sur ceux que je vous ai donné..n'importe quoi qui fait l'affaire je le prend

un grand merci d'avance



--

"Le bonheur est quelque chose qui se multiplie quand il se divise." Paulo Coelho

3 réponses

  1. Flachy Joe Messages postés 2303 Statut Membre 261
     
    Salut,
    SimpleXML est très facile à utiliser, regarde la page d'exemple : https://www.php.net/manual/fr/simplexml.examples-basic.php

    Ça converti l'arbre XML en objet, tu peux ensuite t'inspirer de ce genre de code https://phpro.org/examples/Convert-Object-To-Array-With-PHP.html pour obtenir un tableau.

    Bon courage.
    1
    1. astrocybernaute Messages postés 100 Statut Membre 10
       
      d'accord merci je vais voir ca aussi mais si c le meme que celui que j'ai vu j'ai eu bcp de prob
      0
    2. astrocybernaute Messages postés 100 Statut Membre 10
       
      ca marche très bien jusqu'à présent merci infiniment tu m'a tellement aidé..merci encore Joe (¤_¤)
      0
    3. Flachy Joe Messages postés 2303 Statut Membre 261
       
      De rien, pense à mettre le statut Résolu...
      0
    4. astrocybernaute Messages postés 100 Statut Membre 10
       
      dsl je le repasse en non résolu car j'ai une autre question
      0
  2. astrocybernaute Messages postés 100 Statut Membre 10
     
    Bonjour tout le monde :)

    voila je suis arrivée à faire ce que je voulais et donc je veux le partager avec vous
    n'hésitez pas à me dire ce que vous en pensez

    voila, mon code sert à lires n'importe quel fichier xml (ne contenant pas de namespace) et de l'afficher avec hiérarchie

    Il y a quatre niveaux, si vous avez besoin de plus vous pouvez l'ajouter de la même façon, sinon si vous avez besoin de moins vous pouvez soit le supprimer ou le laisser ca ne gênera pas votre résultat

    
    $x='xml/file.xml';
    $xml = simplexml_load_file($x);
    	
    echo '<h2> Showing '.$xml->count().' items </h2>';
    			
    ////echo all children+attributes from "file.xml" with hierarchy 
    
    foreach ($xml->children() as $m) 
    { 
       printf("<h3>%s has got %d children.</h3>\n", $m['name'], $m->count());
    		
    	//first level
        	echo '<li><b>' .$m->getName().' </b>: '. $m.'</li><ul><ul>';
    		if ($t=$m->attributes())  
    				foreach($m->attributes() as $a => $b)
     				 {
       					 echo '<li>  '.$a,' = ',$b,"</li>";
    					
    				 }
    				 
    				 echo '</ul></ul>';
    		
    		//second level		 
    		foreach ($m->children() as $mv) 
    		{
        		echo ' <ul><li> <b> ' .$mv->getName();
                    echo '</b>  :  '. $mv.'</li><ul>';
    		 
    			if ($mv->attributes())  
    				foreach($mv->attributes() as $a => $b)
     				 {
       					 echo '<li>  '.$a,' = ',$b,"</li>";
    				 }
    			echo '</ul>';
    				 
    			
    		   //third level	 
    		   foreach ($mv->children() as $mvv) 
    			{
    			echo '<ul> <li><b>' . $mvv->getName();
                            echo '</b>  :  '.$mvv.'</li><ul>';
    				
    				if ($mvv->attributes())  
    				 foreach($mvv->attributes() as $a => $b)
    				  {
    						 
    					 echo '<li> '.$a,' = ',$b,"</li>";
    						
    				  }
    				 echo '</ul></ul>';
    				 
    				//fourth level 
    				foreach ($mvv->children() as $v) 
    				{
        				echo ' <ul><li><b>' . $v->getName();
                                    echo '</b> :  '.$v.'</li><ul>';
    				 if ($v->attributes())  
    				   foreach($v->attributes() as $a => $b)
     				 	  {
       					    echo '<li> '.$a,' = ',$b,"</li>";
    				 	  }
    				 	echo '</ul></ul>';
    				}//4
    				
    			}//3
    		 echo '</ul></ul>';
    		 
    		}//2
       
    	}//end foreach 1
    	
    	
      
    
    


    J'espère que ca va aider d'autres personnes

    Wissal
    1
  3. astrocybernaute Messages postés 100 Statut Membre 10
     
    Par contre maintenant j'ai un autre problème , c'est quand le fichier XML contient des namespaces..ca ne marche plus..et je ne sais pas comment le faire
    est ce que qlq peut m'y aider svp
    merci
    1