Fichier xml => tableau associatif

Contenu du snippet

Tous petit bout de code qui lit un fichier .xml et qui le stock dans un tableau de tableau associatif.
Cela ma servis par exemple pour pouvoir importer une liste de produits avec leurs descriptif.
Le tableau en question est $tab_immo.
La fonction main est read_xml().
Dans la fonction search_occurence() remplacer AFF_ID par votre le nom de votre 1ere balise.
exemple du fichier xml:

<BIEN>
<AFF_ID>01</AFF_ID>
<TypeBien>blabla</TypeBien>
<Categorie>blabla</Categorie>
<Commentaires>blabla
blabla</Commentaires>
</BIEN>
<BIEN>
<AFF_ID>02</AFF_ID>
<TypeBien>blabla</TypeBien>
<Categorie>blabla</Categorie>
<Commentaires>blabla
blabla</Commentaires>
</BIEN>

Source / Exemple :


<?
$fichier = "Liste.xml";
$tab_immo = array(array());
$i = -1;

read_xml($fichier);

function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
{
  global $derniereBaliseRencontree;

  $derniereBaliseRencontree = $nomBalise;
}

function fonctionBaliseFermante($parseur, $nomBalise)
{
  global $derniereBaliseRencontree;

  $derniereBaliseRencontree = "";
}

function search_occurence($parseur, $texte)
{
  global $derniereBaliseRencontree;
  global $tab_immo;
  global $i;

  $texte = utf8_decode($texte);
  if ($derniereBaliseRencontree == "AFF_ID")
    $i++;
  $tab_immo[$i][$derniereBaliseRencontree] .= $texte;
}

function read_xml($fichier)
{
  global $tab_immo;

  $parseurXML = xml_parser_create();
  xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
                          , "fonctionBaliseFermante");
  xml_set_character_data_handler($parseurXML, "search_occurence");
  $fp = fopen($fichier, "r");
  if (!$fp) die("Vous n'avez pas uploader de fichier XML");
  while ( $ligneXML = fgets($fp, 1024)) {
    xml_parse($parseurXML, $ligneXML, feof($fp)) or
      die("Erreur XML");
  }
  xml_parser_free($parseurXML);
  fclose($fp);
  //unlink($fichier);
  //foreach($tab_immo[0] as $value)
    //echo $value . "<br>";
}

?>

Conclusion :


Voila j'espere ca peut vous être utile.
A la fin mon unlink me servait à supprimer le fichier, car il était importé via un formulaire d'upload.
Bon code

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (durealex)