begin process at 2012 05 27 20:57:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Xml

 > XML -> TABLEAU ASSOCIATIF

XML -> TABLEAU ASSOCIATIF


 Information sur la source

Note :
4 / 10 - par 1 personne
4,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Xml Classé sous :xml, parser Niveau :Débutant Date de création :24/01/2006 Vu :9 430

Auteur : BiBi FocK

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Comme le titre l'indique, cette fonction permet de transformer une chaîne de caractère xml en un tableau associatif.
Cela ne sera peut-être pas utile, mais je souhaitais quand même déposer cette petite source.

Je suis ouvert à toutes critiques =).

Source

  • function xml2array($val,&$place){
  • for($compteur=0;$place<count($val);$i){
  • $v = $val[$place++];
  • switch($v['type']){
  • case "complete":
  • $tab[$v['tag']][$compteur]['value'] = $v['value'];
  • $tab[$v['tag']][$compteur++]['attributes'] = $v['attributes'];
  • break;
  • case "open":
  • $tab[$v['tag']][$compteur]['value'] = xml2array($val,$place);
  • $tab[$v['tag']][$compteur++]['attributes'] = $v['attributes'];
  • break;
  • case "close":
  • return $tab;
  • }
  • }
  • return $tab;
  • }
  • $xml = file_get_contents("essai.xml");
  • $xp = xml_parser_create();
  • xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, false);
  • xml_parser_set_option($xp, XML_OPTION_SKIP_WHITE, true);
  • xml_parse_into_struct($xp,$xml,$vals,$index);
  • xml_parser_free($xp);
  • $i=0;
  • $tab = xml2array($vals,$i);
  • print_r($tab);
function xml2array($val,&$place){
    for($compteur=0;$place<count($val);$i){
        $v = $val[$place++];
        switch($v['type']){
            case "complete":
                $tab[$v['tag']][$compteur]['value'] = $v['value'];
                $tab[$v['tag']][$compteur++]['attributes'] = $v['attributes'];
                break;
            case "open":
                $tab[$v['tag']][$compteur]['value'] = xml2array($val,$place);
                $tab[$v['tag']][$compteur++]['attributes'] = $v['attributes'];
                break;
            case "close":
                return $tab;
        }
    }
    return $tab;
}

$xml = file_get_contents("essai.xml");
$xp = xml_parser_create();
xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, false);
xml_parser_set_option($xp, XML_OPTION_SKIP_WHITE, true);

xml_parse_into_struct($xp,$xml,$vals,$index);
xml_parser_free($xp);

$i=0;
$tab = xml2array($vals,$i);
print_r($tab);



 Sources de la même categorie

Source avec Zip JEU FRISE CHRONOLOGIQUE EN XML par mldvb
OBTENIR LES TAUX DE CHANGE DU JOUR EN EUROS par oallais
Source avec Zip AFFICHER LES FILM EN SALLE par slhuilli
Source avec Zip Source avec une capture MINI-PROCESSEUR XPROC (PIPELINE XML) par ordiman85
Source avec Zip Source avec une capture XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFI... par aKheNathOn

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture VOIR QUI VISITE VOTRE SITE par Dariumis
Source avec Zip AFFICHER LES FILM EN SALLE par slhuilli
Source avec Zip AJOUT D'UN RENDEZ-VOUS DANS UN CALENDRIER EXCHANGE 2003 par SachaWolf
EXPLOITER UN FLUX RSS DANS UNE FONCTION PHP PORTABLE. par R0_0T
Source avec Zip Source avec une capture PARSER XML POUR MOTHERBOARD MONITOR par oXid_FoX

Commentaires et avis

Commentaire de Onanga le 31/01/2006 17:35:17

Bonjour,

Je te remercie pour ce boulot, on sait tous que c'est galere de se lancer dans le parsing xml.
J'ai pu tester ta fonction, et ca fonctionne tres bien si on utilise un xml tres (TRES) simple du style :
$xml = "<xml><login gender='male'>Vince</login><login gender='female'>Maya</login></xml>";

Une fois que l'on veut entrer dans une structure plus realiste, ca devient ingérable, des valeurs se perdent et la structure tableau est incohérente.

J'ai tenté avec une structure xml semblable :
$xml = "<xml>
<user login='maya'>
<gender>female</gender>
</user>
<user login='vince'>
<gender>male</gender>
</user>
<message sender='vince'>coucou maya, tu vas bien?</message>
<xml>";
et puis le tableau me met les valeurs a gauche et a droite.
---------------------
Je me suis permis pour tester de modifier l'introduction de la fonction. Je te fais passer ma réecriture simplifiée.

<?php
function xml2array($xml,$depth){
$xp = xml_parser_create();
xml_parser_set_option($xp, XML_OPTION_CASE_FOLDING, false);
xml_parser_set_option($xp, XML_OPTION_SKIP_WHITE, true);
xml_parse_into_struct($xp,$xml,$val,$index);
xml_parser_free($xp);
     for($compteur=0;$depth<count($val);$i){
         $v = $val[$depth++];
         switch($v['type']){
             case "complete":
                 $tab[$v['tag']][$compteur]['value'] = $v['value'];
                 $tab[$v['tag']][$compteur++]['attributes'] = $v['attributes'];
                 break;
             case "open":
                 $tab[$v['tag']][$compteur]['value'] = xml2array($val,$depth);
                 $tab[$v['tag']][$compteur++]['attributes'] = $v['attributes'];
                 break;
             case "close":
                return $tab;
        }
    }
    return $tab;
}
// ----Fin de fonction----

// creation du xml
$xml = "<xml><login gender='male'>Vince</login><login gender='female'>Maya</login></xml>";

// Appel a la fonction
$tab = xml2array($xml,1);
// affichage du résultat
print_r($tab);

?>

En te remerciant encore pour le mal donné, j'epsère que ca t'aidera...

Vincent

Commentaire de BiBi FocK le 06/02/2006 13:33:30

Merci beaucoup pour ton code.

Pour ma part je me suis servi de cette fonction seulement pour un xml assez simple.

Mais je reconnais que si l'on a un xml assez conséquent cela devient très vite ingérable, et très lourd.


 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

parser xml [ par Nebraska ] bonjour,bon je débute salement en php; et j'ai besoin d'un parser xml. J'ai essayé ça mais bon ça marche pas :(Une bonne âme prèt a me dire ou je me s Au secours : comment parser un fichier xml et inserer a la volé dans une base mysql [ par deblok83 ] Bonjour, &nbsp;&nbsp;&nbsp; c'est mon premier post ici alors je me permet de me presenter je suis le webmaster de deblok83.com . j'ai un petit proble Parser xml en php [ par tahbre ] Bonjour à tous, Je dois accéder à un fichier xml qui est sur un autre site ftp que le mien, et je veux réaliser un parser en php de façon à stocker l Parser Flux XML afin de trouver une info [ par neoxdragon ] Salut, Ce que je souhaite faire c'est parser un XML de ce type: &lt;item&gt; &lt;id&gt;1&lt;/id&gt; &lt;name&gt;Nom1&lt;/name&gt; &lt;/item&gt; Flux WEBRANKINFO [ par malik7934 ] Hello,Aujourd'hui j'ai fait la douloureuse decouverte que je ne pouvais pas utiliser simple xml sur mon site.... je me suis donc empresse de demander XML SAX organisation d'un menu [ par jnbdzjnbdz ] Bonjour, jessais depuis quelque semaines de faire un systeme avec xml pour mon menu affiche de la facon définis par le code xml voici ce que sais supo XML et EncryptedData ? [ par debuger ] Bonjour,J'aimerai savoir s'il est possible de Parser un fichier&nbsp;XML qui est crypt&#233; !&nbsp;? et cel&#224; avec une feuille de style XSL bien Parser un document xml et créer un fichier [ par Noizet ] Hello,J'ai un document xml qui est sous cette forme :&lt;cours&gt;   &lt;salle< Parseur Xml StAX [ par anisis ] Bonjour tt le monde,En fait mon prblm c'est que je reçois des fichiers xml de grandes tailles et je dois les parser , Maintenant je suis entrain d'uti Aide pour mon Parser XML [ par ddpetit ] Bonjour à tous,  je suis en train de me créer un parser xml pour un de mes sites, un problème subsiste, j'ai réussi à faire le parser en lui meme, mai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales