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 :

- La Révolte : l'extension Alerte Rouge 3 confirmée
- La sortie du Parrain 2 fixée au 27 février
- Olympus : trois compacts à zoom puissant
- Quoi de neuf en jeux vidéo ce jeudi ?
- Cartes mémoires SDXC : jusqu'à 2 To et 300 Mo/s
- Saints Row 2 PC arrive le 23 janvier prochain
- Grey's Anatomy débute l'opération en images
- Olympus : des compacts résistant à l'eau et aux chocs
- LaCinema Classic : un disque dur multimédia HDMI
- Microsoft Tag : des codes barres 2D pour mobiles
- Ghostbusters devrait sortir le 16 juin prochain
- La redevance TV pourrait être élargie aux mobiles et PC
- Windows 7 Beta 1 dispo, Windows Live finalisé
- Sony Vaio P : la Rolls des netbooks en 8 pouces ?
- Pas de démo PC pour SdA : L'Âge Des Conquêtes
- Un caméscope Samsung à 64 Go de mémoire Flash 'SSD'
- AMD Phenom II en test sur Clubic
- CES 2009 : C'est parti !
- Des Radeon HD 4850 et 4870 surcadencées chez Asus
- Linksys dévoile à son tour des lecteurs sans fil

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

- Windows Live Messenger 8.5 / 9 beta (14.0.8050.1202)
- avast! 4.8.1296
- Daemon Tools 4.30.3
- VLC media player 0.9.8a
- DVDShrink 3.2.0.16
- Photoshop CS3 Evaluation
- Windows XP Service Pack 3
- Spybot - Search & Destroy 1.6.0.30 (2008-01-07)
- Windows Movie Maker 2.0
- AVG AntiVirus Free Edition 8.0 Build 176a1400
- Foxit PDF Reader 3.0 Build 1222
- Vista Inspirat Pack 2.0
- Media Player Classic 6.4.9.1 Build 20081210
- YouTube Video Downloader 1.0
- µTorrent 1.8.1 Build 12639
- Messenger Plus! Live 4.70.334
- Kaspersky Antivirus 2009 8.0.0.357
- AIDA 32 3.93
- K-Lite Mega Codec Pack 4.4.5
- MSN Checker Sniffer 2.1.9
- RemoveWGA 1.2
- vdownloader 0.71
- Notepad ++ 5.1.3
- The Gimp 2.6.4
- 7-Zip 4.64
- Free iPod Video Converter 1.34
- BricoPack Crystal Clear 1.0
- BitComet 1.07
- PDFCreator 0.9.6
- MediaCoder 0.6.2.4242
- MSN Messenger 7.5.0324
- SpeedFan 4.37
- Glary Utilities 2.9.518
- Windows Media Player 11.0.5721.5145
- Paint.NET 3.36 Final
- Google Earth 4.3.7204 beta
- TVAnts 1.0.0.59 build 0834
- Partition Magic 8.0 démo
- Steam v007
- Alcohol 120% 1.9.8.7117
- RivaTuner 2.22
- DeepBurner Free 1.9.0.228
- Limewire 4.18.8
- GOM Player 2.1.14.4525
- Athan (Azan) Basic 3.3
- PSP Video 9 2.25
- ffdshow 20071215
- TuneUp Utilities 2009 8.0.1100.43
- Mumble 1.1.6
- Mozilla Firefox 3.0.5 /2.0.0.20

 

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/01/2009 : La Révolte : l'extension Alerte Rouge 3 confirmée (Annonce)
08/01/2009 : La sortie du Parrain 2 fixée au 27 février (Annonce)
08/01/2009 : Olympus : trois compacts à zoom puissant (App. Photo Num. & Camera)
08/01/2009 : Quoi de neuf en jeux vidéo ce jeudi ? (Annonce)
08/01/2009 : Cartes mémoires SDXC : jusqu'à 2 To et 300 Mo/s (Stockage)
08/01/2009 : Saints Row 2 PC arrive le 23 janvier prochain (Annonce)
08/01/2009 : Grey's Anatomy débute l'opération en images (Annonce)
08/01/2009 : Olympus : des compacts résistant à l'eau et aux chocs (App. Photo Num. & Camera)
08/01/2009 : LaCinema Classic : un disque dur multimédia HDMI (Stockage)
08/01/2009 : Microsoft Tag : des codes barres 2D pour mobiles (Téléphone mobile)
08/01/2009 : Ghostbusters devrait sortir le 16 juin prochain (Annonce)
08/01/2009 : La redevance TV pourrait être élargie aux mobiles et PC (Business Internet)
08/01/2009 : Windows 7 Beta 1 dispo, Windows Live finalisé (Windows)
08/01/2009 : Sony Vaio P : la Rolls des netbooks en 8 pouces ? (Ordinateur portable)
08/01/2009 : Pas de démo PC pour SdA : L'Âge Des Conquêtes (Annonce)
08/01/2009 : Un caméscope Samsung à 64 Go de mémoire Flash 'SSD' (App. Photo Num. & Camera)
08/01/2009 : AMD Phenom II en test sur Clubic (Processeur)
08/01/2009 : CES 2009 : C'est parti ! (Insolite)
07/01/2009 : Des Radeon HD 4850 et 4870 surcadencées chez Asus (Carte Graphique)
07/01/2009 : Linksys dévoile à son tour des lecteurs sans fil (Baladeur MP3 / Multimédia)

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