Retour au site
Connexion : S'inscrire

Comment insérer un flux XML sur mon site internet ?

Les flux XML sont des sortes de bases de données sous forme d'un fichier texte avec une norme d'écriture commune.
Il existe toute une série de logiciels qui permettent de les utiliser mais ce qui nous intéresse plus particulièrement ici est de les utiliser dans une page web.

 

Utilisation basique

Pour une utilisation basique et pour des sites de petite taille (avec peu de visiteurs), une solution basique s'offre à vous.
Son avantage est qu'elle est très facile à mettre en place. Son inconvénient est qu'elle n'est pas très douce avec les ressources du serveur d'hébergement (ni très douce avec les serveurs de Clubic).
En effet, elle va chercher les informations à chaque chargement de la page, ce qui n'est pas sans provoquer des ralentissements aux heures d'affluence.

Voici un exemple de code utilisable pour une telle insertion :

<?php

# Configuration

$fichier_xml = "http://www.clubic.com/xml/news.xml"; # Placez ici l'adresse du flux
$nombre_limite = 20; # Nombre maximum d'éléments à afficher

# Affichage du Flux
$raw = file_get_contents($fichier_xml);
if ($raw) {
if(eregi("<item>(.*)</item>",$raw,$rawitems)){
$items = explode("<item>", $rawitems[0]);
$nb = count($items);
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite;

for ($i=0;$i<$maximum;$i++) {
eregi("<title>(.*)</title>",$items[$i+1], $title);
eregi("<link>(.*)</link>",$items[$i+1], $link);
echo "- <a href=\"".$link[1]."\" target=\"_blank\">".$title[1]."</a><br />";
}
}
}
?>

Comme vous pouvez le remarquer, nous n'affichons que le titre et nous passons outre la date et d'autres renseignements utilisables. Vous pouvez bien évidemment modifier ce script pour l'adapter à ce que vous souhaitez afficher.

Cela donne le résultat ci dessous avec notre flux Actu réglé à 20 éléments maximum :

- Vidéo en ligne : les meilleurs logiciels gratuits !
- [Vidéo] Les fans envahissent l'Apple Store de Paris
- Revue de web : Windows 7, Droid, Pyromane et Tarzan
- Warpzone 27 : corruption, vengeance et violence !
- Quoi de neuf en jeux vidéo ce samedi ?
- Clubic Week : sondages et cinémas contre Hadopi
- Live Japon : Nintendo, blessé mais combatif
- Dialog : 5 ans de Firefox, licence 3G et Hadopi
- Dessins de la semaine : tous pirates ! (ou presque)
- Dragon Age, Flashpoint, Torchlight : jour de patch
- MacHeist : 6 applications gratuites pour Mac OS X
- Test express vidéo de la Magic Mouse (màj)
- StarCraft 2 pour 2010, Diablo 3 reste flou
- 18 Wheels, Crash Time, Dark Salvation en démos
- Vidéo : Runaway : A Twist Of Fate fait le beau
- Guide d'achat cartes mère novembre 2009 sur Clubic
- Fraps 3.0 est compatible DirectX 11 et 3D Vision
- Zoho, taxé de faux MS Office, lance fakeoffice.org
- Résultats : NVIDIA renoue avec les bénéfices
- Quoi de neuf en jeux vidéo ce vendredi ?

Cela donne le résultat ci dessous avec notre flux Top Téléchargement réglé à 50 éléments maximum :

- Daemon Tools 4.35.5
- Winrar 3.90 Final
- Windows Live Messenger 2009 14.0.8089.726
- Mozilla Firefox 3.5.5 / 3.0.15
- avast! 4.8.1358
- VLC media player 1.0.3
- Google Earth 5.1.3506.3999 bêta
- AVG AntiVirus Free Edition 9.0.698a1730
- MSN Checker Sniffer 2.1.9
- Hotspot Shield 1.32
- YouTube Video Downloader 1.0
- Foxit PDF Reader 3.1.3.1030
- Windows Movie Maker 2.0
- µTorrent 1.8.5 Build 17091
- Mumble 1.1.8
- PDFCreator 0.9.8
- Windows XP Service Pack 3
- DVDShrink 3.2.0.16
- vdownloader 1.0
- Media Player Classic 6.4.9.1 Build 20090706
- Hamachi 2.0.1.66
- OpenOffice.org 3.1.1 Final
- K-Lite Mega Codec Pack 5.4.0
- Windows 7 USB/DVD Download Tool 1.0
- Steam v008
- Notepad ++ 5.51
- Spybot - Search & Destroy 1.6.2.46 (10-07-2009)
- AIDA 32 3.93
- 7-Zip 4.65
- Skype 4.1.0.179
- MSN Messenger 7.5.0324
- Vista Inspirat Pack 2.0
- Alcohol 120% 1.9.8.7612
- Windows 7 Upgrade Advisor 2.0
- PhotoFiltre 6.3.2
- Secunia Personal Software Inspector 1.5.0.1
- Paint.NET 3.5 Final
- The Gimp 2.6.7
- Glary Utilities 2.17.0.776
- Messenger Plus! Live 4.82.368
- ZoneAlarm 8.0.298.0
- Photoscape 3.3
- SpeedFan 4.39
- BitComet 1.15
- Sopcast 3.0.1
- Opera 10.01 Finale
- Partition Magic 8.0 démo
- LG PC Suite 3 3
- Adobe Photoshop CS4 11.0.1
- iTunes 9.0.2

 

Utilisation intelligente

Après avoir vu ces rudiments, des équipes de programmeurs ont eu la bonne idée de développer des outils permettant de prendre astucieusement avantage des flux XML en créant un composant d'intégration avec des caractéristiques plus intéressantes comme la mise en cache des fichiers XML (ainsi le serveur ne va plus à chaque fois chercher le fichier XML mais à des intervals réguliers).

Notre composant préféré du moment qui fait cela est MagPieRSS

Pour utiliser ce composant, voici un rapide tour d'horizon :
- Télécharger le composant sur son site officiel
- Le décompresser dans un répertoire de son site web (par exemple dans un répertoire "magpierss" situé à la racine du site)
- Créer un répertoire cache accessible en lecture et en écriture par le serveur web (en mettant une authorisation 777 par exemple). Par défaut, celui ci s'appelle "cache".

Pour l'utiliser ensuite, c'est simple, il suffit d'insérer ce bout de code dans vos pages :

<?php
require_once "magpierss/rss_fetch.inc"; \/\/ Chemin pour accéder au fichier rss_fetch.inc
$fichier_xml = "http://www.clubic.com/xml/news.xml"; \/\/ Adresse du flux XML

$rss = fetch_rss($fichier_xml);

echo $rss->channel['title'],"<br />\n";
foreach ($rss->items as $item ) {
$title = $item[title];
$url = $item[link];
echo "<a href=\"$url\">$title</a><br />\n";
}
?>

Comme pour l'utilisation "basique", libre à vous de modifier ces lignes.
Par exemple, pour prendre en compte la date et la catégorie, mais aussi n'afficher que les 20 premiers résultats, voici ce que donne le code source :

<?php
require_once "magpierss/rss_fetch.inc";
$fichier_xml = "http://www.clubic.com/xml/news.xml";
$nombre_element = 20;

$rss = fetch_rss($fichier_xml);

if (is_array($rss->items))
{
$liste = array_slice($rss->items, 0, $nombre_element);

echo "<b>",$rss->channel['title'],"</b><br />\n";
foreach ($liste as $item ) {
$title = $item[title]; $url = $item[link];
$pubdate = $item[pubdate];
$category = $item[category];

$pubdate = date("d/m/Y", strtotime($pubdate));
echo "$pubdate : <a href='$url'>$title</a> ($category)<br />\n";
}
}
?>

... et voici le résultat ...

Clubic.com - Actualité
08/11/2009 : Vidéo en ligne : les meilleurs logiciels gratuits ! (Logiciels)
07/11/2009 : [Vidéo] Les fans envahissent l'Apple Store de Paris (Mac OS)
07/11/2009 : Revue de web : Windows 7, Droid, Pyromane et Tarzan (Internet)
07/11/2009 : Warpzone 27 : corruption, vengeance et violence ! (Insolite)
07/11/2009 : Quoi de neuf en jeux vidéo ce samedi ? (Annonce)
07/11/2009 : Clubic Week : sondages et cinémas contre Hadopi (Services en ligne)
07/11/2009 : Live Japon : Nintendo, blessé mais combatif (Business jeux vidéo)
07/11/2009 : Dialog : 5 ans de Firefox, licence 3G et Hadopi (Business Informatique)
07/11/2009 : Dessins de la semaine : tous pirates ! (ou presque) (Insolite)
06/11/2009 : Dragon Age, Flashpoint, Torchlight : jour de patch (Annonce)
06/11/2009 : MacHeist : 6 applications gratuites pour Mac OS X (Mac OS)
06/11/2009 : Test express vidéo de la Magic Mouse (màj) (Clavier / Souris)
06/11/2009 : StarCraft 2 pour 2010, Diablo 3 reste flou (Annonce)
06/11/2009 : 18 Wheels, Crash Time, Dark Salvation en démos (Annonce)
06/11/2009 : Vidéo : Runaway : A Twist Of Fate fait le beau (Annonce)
06/11/2009 : Guide d'achat cartes mère novembre 2009 sur Clubic (Carte Mère)
06/11/2009 : Fraps 3.0 est compatible DirectX 11 et 3D Vision (Carte Graphique)
06/11/2009 : Zoho, taxé de faux MS Office, lance fakeoffice.org (Insolite)
06/11/2009 : Résultats : NVIDIA renoue avec les bénéfices (Business Informatique)
06/11/2009 : Quoi de neuf en jeux vidéo ce vendredi ? (Annonce)