Salut à tous,
J'ai tout essayé, mais je n'y arrive pas, il ne doit pas manquer grand chose.
J'ai récupéré un script et je l'ai adapté, mais j'ai besoin de faire passer un variable $var dans la fonction fonctionBaliseFermante. Le truc c'est que cette fonction est appelé par xml_set_element_handler je ne sais pas comment faire passer $var.
Le script ci-dessous:
<?
$var = 1;
$fichier = "nom_fichier";
if ($fichier)
{
$fichier = "$fichier.xml";
// Ma propre fonction de traitement des balises ouvrantes
function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
{
// En fait... nous nous conteterons de mémoriser le nom de la balise
// afin d'en tenir compte dans la fonction "fonctionTexte"
global $derniereBaliseRencontree;
$derniereBaliseRencontree = $nomBalise;
}
// Ma propre fonction de traitement des balises fermantes
function fonctionBaliseFermante($parseur, $nomBalise, $var) // PROBLEME ICI LA VARIABLE $var NE PASSE PAS, MAIS OU FAUT-IL L'APPELER ???
{
global $derniereBaliseRencontree;
global $data_01;
global $data_02;
global $data_03;
global $data_04;
global $data_05;
global $data_06;
global $data_07;
switch ($nomBalise)
{
case "PDDT" :
if (eregi("$var", $data_01))
{
echo "<tr><td bgcolor=''>$data_01 - $data_02</td></tr>";
}
$data_01 = "";
$data_02 = "";
$data_03 = "";
$data_04 = "";
$data_05 = "";
$data_06 = "";
$data_07 = "";
break;
}
// On oublie la dernière balise rencontrée
// et tout le reste
$derniereBaliseRencontree = "";
}
// Ma propre fonction de traitement du texte
// qui est appelée par le "parseur"
function fonctionTexte($parseur, $texte)
{
global $derniereBaliseRencontree;
global $data_01;
global $data_02;
global $data_03;
global $data_04;
global $data_05;
global $data_06;
global $data_07;
// Nous n'affichons pas le texte ou lien directement
// nous attendrons de rencontrer la balise fermante
// et ainsi d'avoir tous les élements avant l'affichage.
// ATTENTION: Par défaut les noms des balises sont
// mises en majuscules
switch ($derniereBaliseRencontree) {
case "PAGR":
$data_01 = $texte;
break;
case "DSC1":
$data_02 = $texte;
break;
case "DSC2":
$data_03 = $texte;
break;
case "DSC3":
$data_04 = $texte;
break;
case "CPRI":
$data_05 = $texte;
break;
case "EPRI":
$data_06 = $texte;
break;
case "PQOH":
$data_07 = $texte;
break;
}
}
// Création du parseur XML
$parseurXML = xml_parser_create();
// Je précise le nom des fonctions à appeler
// lorsque des balises ouvrantes ou fermantes sont rencontrées
xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante", "fonctionBaliseFermante" );
// Je précise le nom de la fonction à appeler
// lorsque du texte est rencontré
xml_set_character_data_handler($parseurXML, "fonctionTexte" );
// Ouverture du fichier
$fp = fopen($fichier, "r" );
if (!$fp) die("Impossible d'ouvrir le fichier XML" );
echo "<table border=2 bordercolor='red'>";
// Lecture ligne par ligne
while ( $ligneXML = fgets($fp)) {
// Analyse de la ligne
// REM: feof($fp) retourne TRUE s'il s'agit de la dernière
// ligne du fichier.
xml_parse($parseurXML, $ligneXML);
}
xml_parser_free($parseurXML);
fclose($fp);
echo "</table>";
}
?>