Limiter le nombre de résultat d'un fichier xm
Stany
-
Stany -
Stany -
Bonjour,
Je voudrai limiter le nombre de résultat d'un fichier xml sur une de mes pages web.
J'utilise le script suivant :
<?php
$fichier = "www.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)
{
// On oublie la dernière balise rencontrée
global $derniereBaliseRencontree;
$derniereBaliseRencontree = "";
}
// Ma propre 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
// ATTENTION: Par défaut les noms des balises sont
// mises en majuscules
switch ($derniereBaliseRencontree) {
case "NAME":
echo "<div style='padding-bottom: 5px'><strong>Tournois : $texte</strong></div>";
break;
case "STARTDATE":
echo "Date est heure : $texte<br>";
break;
case "MAXPLAYERS":
echo "Joueurs maximum : $texte<br>";
break;
case "DESCRIPTION":
echo "description : $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");
// 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);
?>
Merci pour votre aide
Je voudrai limiter le nombre de résultat d'un fichier xml sur une de mes pages web.
J'utilise le script suivant :
<?php
$fichier = "www.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)
{
// On oublie la dernière balise rencontrée
global $derniereBaliseRencontree;
$derniereBaliseRencontree = "";
}
// Ma propre 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
// ATTENTION: Par défaut les noms des balises sont
// mises en majuscules
switch ($derniereBaliseRencontree) {
case "NAME":
echo "<div style='padding-bottom: 5px'><strong>Tournois : $texte</strong></div>";
break;
case "STARTDATE":
echo "Date est heure : $texte<br>";
break;
case "MAXPLAYERS":
echo "Joueurs maximum : $texte<br>";
break;
case "DESCRIPTION":
echo "description : $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");
// 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);
?>
Merci pour votre aide
A voir également:
- Limiter le nombre de résultat d'un fichier xm
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
2 réponses
Bonjour,
Déjà, pour commencer, je trouve bizarre de faire ainsi un parseur XML. la méthode par XSL est pourtant très puissante. Je te conseille de te pencher sur le XSL et XSL-T.
Sinon, pour ta méthode, tu peux créer une variable pour compter le nombre d'apparition des balises, et ne pas afficher au delà d'une certaine valeur.
Bien évidemment, sans savoir comment est construit ton XML, je ne peux pas être beaucoup plus précis...
Déjà, pour commencer, je trouve bizarre de faire ainsi un parseur XML. la méthode par XSL est pourtant très puissante. Je te conseille de te pencher sur le XSL et XSL-T.
Sinon, pour ta méthode, tu peux créer une variable pour compter le nombre d'apparition des balises, et ne pas afficher au delà d'une certaine valeur.
Bien évidemment, sans savoir comment est construit ton XML, je ne peux pas être beaucoup plus précis...
Merci pour ta réponse.
Voici le fichier xml utilisé
http://www.ipoker.com/next-tournaments/whpokerclub-next-tournaments.XML
PS: je ne connais rien au php, c'est un script que j'ai recupéré sur le net.
Merci
Voici le fichier xml utilisé
http://www.ipoker.com/next-tournaments/whpokerclub-next-tournaments.XML
PS: je ne connais rien au php, c'est un script que j'ai recupéré sur le net.
Merci