étant débutant, j'en appelle à votre aide:
Je souhaite afficher uniquement les attributs titre et departement qui correspondent à la date 7/9/2009.
agenda.xml
Code : Tout sélectionner
<?xml version="1.0" encoding="ISO-8859-1"?>
<agenda>
<event date="6/9/2009" numero="1" departement="32" feuille="division" population="adulte" competition="competitif" titre="Petanque Regional Samatan" ><![CDATA[<i> CDSA 32 simple tout loisir</i>]]></event>
<event date="7/9/2009" numero="2" departement="31" feuille="division" population="enfant" competition="competitif" titre="Natation" ><![CDATA[<i> CDSA 31</i>]]></event>
</agenda>
Code : Tout sélectionner
<?
// Fichier à analyser
$file = "agenda.xml";
// variable de la profondeur du parcours de l'arbre
$depth = array();
// Etat de la pile de parcours du document XML
$stack = array();
// Valeur d'un dernier élément lu
$globaldata ="";
// Fonction associée à l’événement début d’élément
function startElement($parser, $name, $attrs)
{
global $depth;
global $stack;
for ($i = 1; $i < $depth[$parser]; $i++)
{print " ";}
array_push($stack,$name);
$depth[$parser]++;
//affichage des attributs de l'élément
while (list ($key, $val) = each ($attrs))
{echo "$key $val";}
print " ";
}
// Fonction associée à l’événement fin d’élément
function endElement($parser, $name)
{
global $depth;
global $stack;
global $globaldata;
for ($i = 0; $i < $depth[$parser]-1; $i++)
{print " ";}
$depth[$parser]--;
array_pop($stack);
}
// Fonction associée à l’événement données textuelles
function characterData($parser, $data)
{
global $globaldata;
$globaldata = $data;
}
// Fonction associée à l’événement de détection d'un appel d'entité externe
function externalEntityRefHandler($parser,
$openEntityNames,
$base,
$systemId,
$publicId)
{
if ($systemId)
{ if (!list($parser, $fp) = new_xml_parser($systemId))
{
printf("Impossible d'ouvrir %s à %s\n",
$openEntityNames,
$systemId);
return FALSE;
}
while ($data = fread($fp, 4096))
{
if (!xml_parse($parser, $data, feof($fp)))
{
printf("Erreur XML : %s à la ligne %d lors du traitement de l'entité %s\n",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser),
$openEntityNames);
xml_parser_free($parser);
return FALSE;
}
}
xml_parser_free($parser);
return TRUE; } return FALSE;
}
// Fonction de création du parser et d'affectation
// des fonctions aux gestionnaires d'événements
function new_xml_parser($file)
{
global $parser_file;
//création du parseur
$xml_parser = xml_parser_create();
//Activation du respect de la casse du nom des éléments XML
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
//Déclaration des fonctions à rattacher au gestionnaire d'événement
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");
//Ouverture du fichier
if (!($fp = @fopen($file, "r"))) { return FALSE; }
//Transformation du parseur en un tableau
if (!is_array($parser_file))
{ settype($parser_file, "array"); }
$parser_file[$xml_parser] = $file;
return array($xml_parser, $fp);
}
// Appel à la fonction de création et d'initialisation du parseur
if (!(list($xml_parser, $fp) = new_xml_parser($file)))
{ die("Impossible d'ouvrir le document XML"); }
// Traitement de la ressource XML
while ($data = fread($fp, 4096))
{
if (!xml_parse($xml_parser, $data, feof($fp)))
{ die(sprintf("Erreur XML : %s à la ligne %d\n",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
// Libération de la ressource associée au parser
xml_parser_free($xml_parser);
?>