Bonjour,

Je developpe une application php qui a besoin de fichier de configuration.

j'utilise php 4.3.10 avec easy php.

Pour lire le fichier xml j'utilise le parser xml par default avec

xml_parser_create("iso-8889-1");

Mon but est de charger les informations dans un tableau en memoire.
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<?xml version="1.0" encoding="iso-8859-1"?>
<configuration>
	<colonnes nombre="3">
		<colonne valeur="heure" taille="8" separateur=" " taille_separateur="1" />
		<colonne valeur="statut" taille="5" separateur=" " taille_separateur="4" />
		<colonne valeur="description" taille="" separateur="" taille_separateur="" />
	</colonnes>
</configuration>
Je voudrais mettre ses informations dans un tableau structurée de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
$tableau['COLONNE1']['VALEUR'] /* "heure" est stocké dans cette cellule */
$tableau['COLONNE1']['TAILLE'] /* 8 */
$tableau['COLONNE1']['SEPARATEUR'] /* " " */
$tableau['COLONNE1']['TAILLE_SEPARATEUR'] /* 1 */
etc...
or pour parser le fichier j'ai dû définir deux fonctions que le parseur appelle automatiquement :
Voici ce qu'il fait quand il rencontre une balise ouvrante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
function baliseOuvrante($parser, $name, $attrs)
	{
		global $tableauEntete;
		$tableau = array();
		static $i = 0;
 
		/* La variable est globale car on doit l'utiliser dans la suite */
		//global $tableauTaille = array();
 
		/* On recherche la balise qui nous interesse à savoir separateur et on souhaite avoir 
		 * l'attribut taille. Celui-ci se trouve dans le tableau associatif $attrs
		 */
		if($name == "COLONNES")
		{
			$nbColonne = intval($attrs['NOMBRE']);
		}
		if ($name == "COLONNE")
		{
			$tableau['COLONNE'.$i]['VALEUR'] = $attrs['VALEUR'];
			$tableau['COLONNE'.$i]['TAILLE'] = intval($attrs['TAILLE']);
			$tableau['COLONNE'.$i]['SEPARATEUR'] = $attrs['SEPARATEUR'];
			$tableau['COLONNE'.$i]['TAILLE_SEPARATEUR'] = intval($attrs['TAILLE_SEPARATEUR']);
                        $i++;
		}
Le problème avec ce code (qui me semble logique) est que le tableau ne contient qu'une seule ligne (la dernière) car le tableau est réécrasé à chaque appel de la fonction à cause de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
global $tableauEntete;
$tableau = array();
Mais le problème persiste si je met le tableau en variable "globale" au dessus de la fonction, celui-ci ne se rempli pas.

Comment faire pour résoudre le problème.

Merci d'avance pour vos réponses.