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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| <?php
$fichier = "catalogue.xml";
//fonction de traitement des balises ouvrantes
function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
{
// mémorisation du nom de la balise
// afin d'en tenir compte dans la fonction "fonctionTexte"
global $derniereBaliseRencontree;
$derniereBaliseRencontree = $nomBalise;
}
// fonction de traitement des balises fermantes
function fonctionBaliseFermante($parseur, $nomBalise)
{
// On oublie la dernière balise rencontrée
global $derniereBaliseRencontree;
$derniereBaliseRencontree = "";
}
// fonction de traitement du texte qui est appelée par le "parseur"
function fonctionTexte($parseur, $texte)
{
global $derniereBaliseRencontree;
// Selon les cas, nous affichons le texte ou nous proposons un lien
global $desc;
$photo=$texte;
$ref=$texte;
$lien=$texte;
$descC=$texte;
$desc=$texte;
switch ($derniereBaliseRencontree) {
case "REF":
echo $ref;
break;
case "LINK":
echo ":<a href=\"$lien\">liens RS</a><br />";
break;
case "PHOTO":
echo ":<a href=\"$photo\">Photo</a><br />";
break;
case "DESCRIPTIF_COURT":
echo $descC;
break;
case "DESCRIPTIF":
echo $desc;
break;
}
}
// Création du parseur XML
$parseurXML = xml_parser_create();
//nom des fonctions à appeler lorsque des balises ouvrantes ou fermantes sont rencontrées
xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
, "fonctionBaliseFermante");
// 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");
// Lecture ligne par ligne
while ( $ligneXML = fgets($fp, 1024)) {
// Analyse de la ligne
// REM: feof($fp) retourne TRUE s'il s'agit de la dernière
// ligne du fichier.
xml_parse($parseurXML, $ligneXML, feof($fp)) or
die("Erreur XML");
}
xml_parser_free($parseurXML);
fclose($fp);
?> |
Partager