supinfo
Ouverture de  SUPINFO USA à San Francisco en 2008. Des études en informatique en Californie à un tarif abordable ! Inscrivez-vous dès maintenant !
supinfo
Connexion :
 

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 :

- IDF 2008 : une puce pour rendre le multiGPU universel
- IDF 2008 : le point sur la roadmap 2008/2009
- De la photographie à la 3D avec Microsoft Photosynth
- Sécurisez votre compte Gmail !
- MobileMe : Clubic.com teste le service web d'Apple
- BitDefender : la gamme 2009 est disponible
- Firefox 2.0 bientôt la migration de masse
- Eclipse : carte mère X58 pour Core i7 chez MSI
- Importants progrès pour l'OLED par Toshiba
- GC : Fallout 3 : trois images et une date !
- Insolite : 'nid d'oiseau', le haut parleur olympique
- WoW : Wrath Of The Lich King, la video d'introduction
- La FCC ordonne à Comcast d'arrêter son filtrage
- Gravure Blu-ray : bientôt en standard dans Windows
- GC : Mirror's Edge voltige en vidéo
- Album de soutien au Tibet : iTunes bloqué en Chine
- Action collective contre l'iPhone 3G aux Etats-Unis
- Une Radeon HD 4870 double BIOS chez Palit
- Quoi de neuf en jeux vidéo ce jeudi ?
- GC : GTA IV se dévoile en images sur PC

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

- avast! 4.8.1229
- Daemon Tools 4.30.1
- AVG AntiVirus Free Edition 8.0.100a1327
- Windows Movie Maker 2.0
- TVAnts 1.0.0.59 build 0834
- Spybot - Search & Destroy 1.6.0.30
- Winrar 3.71
- Photoshop CS3 Evaluation
- µTorrent 1.8 build 11813
- BitComet 1.03
- DVDShrink 3.2.0.16
- Glary Utilities 2.6.0.228
- Windows XP Service Pack 3
- 80 in 1 Best Flash games 1.0
- TerraExplorer 5.0.2.10 Basic
- Everest Ultimate 4.50 Build 1330 Final
- Vista Inspirat Pack 2.0
- Sopcast 3.0.1
- Foxit PDF Reader 2.3 Build 2822
- Wow Cartographe 1.07
- AIDA 32 3.93
- XP Royale Black Thème
- Media Player Classic 6.4.9.1 Beta 20080308
- YouTube Video Downloader 1.0
- eMule 0.49b
- Paint.NET 3.35
- VLC 0.8.6i
- adsl TV 1.99++
- Messenger Plus! Live 4.70.334
- Clean Virus MSN 1.7.0
- vdownloader 0.71
- Notepad ++ 5.0.3
- Windows Media Player 11.0.5721.5145
- Limewire 4.18.3
- Kaspersky Antivirus 2009 8.0.0.357
- Flash Player 9.0.124.0
- MSN Checker Sniffer 2.1.9
- SmitFraudFix 2.336
- Nero 8 8.3.6.0
- SpeedFan 4.35
- K-Lite Mega Codec Pack 4.1.7
- BricoPack Crystal Clear 1.0
- Antivir Personal Edition 8.1.0.46
- GOM Player 2.1.9.3753
- DeepBurner Free 1.9.0.228
- 7-Zip 4.57
- CPU-Z 1.46
- PDFCreator 0.9.5
- MediaCoder 0.6.1.4166
- Alcohol 120% 1.9.7.6221

 

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é
21/08/2008 : IDF 2008 : une puce pour rendre le multiGPU universel (Carte Graphique)
21/08/2008 : IDF 2008 : le point sur la roadmap 2008/2009 (Processeur)
21/08/2008 : De la photographie à la 3D avec Microsoft Photosynth (Services en ligne)
21/08/2008 : Sécurisez votre compte Gmail ! (Services en ligne)
21/08/2008 : MobileMe : Clubic.com teste le service web d'Apple (Services en ligne)
21/08/2008 : BitDefender : la gamme 2009 est disponible (Windows)
21/08/2008 : Firefox 2.0 bientôt la migration de masse (Windows)
21/08/2008 : Eclipse : carte mère X58 pour Core i7 chez MSI (Carte Mère)
21/08/2008 : Importants progrès pour l'OLED par Toshiba (Moniteur)
21/08/2008 : GC : Fallout 3 : trois images et une date ! (Annonce)
21/08/2008 : Insolite : 'nid d'oiseau', le haut parleur olympique (Insolite)
21/08/2008 : WoW : Wrath Of The Lich King, la video d'introduction (Annonce)
21/08/2008 : La FCC ordonne à Comcast d'arrêter son filtrage (FAI)
21/08/2008 : Gravure Blu-ray : bientôt en standard dans Windows (Windows)
21/08/2008 : GC : Mirror's Edge voltige en vidéo (Annonce)
21/08/2008 : Album de soutien au Tibet : iTunes bloqué en Chine (Business Internet)
21/08/2008 : Action collective contre l'iPhone 3G aux Etats-Unis (Business Informatique)
21/08/2008 : Une Radeon HD 4870 double BIOS chez Palit (Carte Graphique)
21/08/2008 : Quoi de neuf en jeux vidéo ce jeudi ? (Annonce)
21/08/2008 : GC : GTA IV se dévoile en images sur PC (Annonce)

 
Clubic.com
 
Achetez-facile.com
 
Jeuxvideo.fr
 
neteco.com
 
mobinaute.com