Parcourir un tableau multidimensionnel et creer le XML correspondant

Résolu
cs_Noizet Messages postés 91 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 24 octobre 2008 - 21 mai 2008 à 18:03
cs_Noizet Messages postés 91 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 24 octobre 2008 - 22 mai 2008 à 11:47
Hello,
J'ai un tableau multidimensionnel sous cette forme :

object(stdClass)#2 (16) {
  ["id"]=>
  string(5) "text2"
  array(3) {
    [0]=>
    object(stdClass)#3 (17) {
      ["id"]=>
      string(5) "text3"
    }
    [1]=>
    object(stdClass)#4 (17) {
      ["id"]=>
      string(5) "text4"
    }
    [2]=>
    object(stdClass)#5 (17) {
      ["id"]=>
      string(5) "text5"
    }
  }
}

et j'aimerai le parcourir et créer la strucutre XML correspondante :
<text2>
<text3></text3>
<text4></text4>
<text5></text5>
</text2>

J'ai fait une fonction récurisve pour parcourir mon tableau :

function parcoursTableauEtCreerXML($tableau){
  var_dump($tableau);
  //Création de nombre fichier xml :
  $xml = new creer_xml('fichierXML','ISO-8859-2');
  //parcour le tableau
  foreach ($tableau as $cle=>$valeur)
  {
    //si l'un des éléments est lui même un tableau
    // alors on applique la fonction à ce tableau
    if(is_array($valeur)) {
      //On creer un noeud ouvert <nomNoeud>
      $xml->creerNoeud('enregistrement');


      // on effectue la récursivité
      parcoursTableauEtCreerXML($valeur);
      } else {
        // si ce n'est pas un tableau
        // on creer un noeud fermé <nomNoeud></nomNoeud>
        $xml->CreerNoeudContenu('test',"");
      }
    }
    //Une fois le tableau parcouru on creer le fichier XML
   $xml->creerlefichier();
}

(La classe XML fonctionne très bien)

Le problème c'est que je parcours faux mon tableau, mais je ne vois pas vraiment comment faire! Est-ce que qqun à une idée? Est-ce qu'on doit mettre un cas d'arrêt comme en java?

"NoiZet"

14 réponses

cs_Noizet Messages postés 91 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 24 octobre 2008 3
22 mai 2008 à 11:47
Voilà j'ai trouvé la solution :
function recursive($tab){
  $fichierFinal;
   foreach($tab as $cle=>$valeur){
      if(isset($valeur->id) && is_array($valeur->id)){
        $fichierFinal .= "quelque chose".recursive($valeur->id);
      }else{
        $fichierFinal .= "quelque chose d'autre";
      }
    }
    return $fichierFinal;
}

"NoiZet"
3