Retour au site
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 :

- Live Japon : l'hygiène du technophile
- Dialog : jeux vidéo et PC green
- Clubic Week : Hadopi 2 - Piratage 0
- Dessins de la semaine : un best of Hadopien
- Destination Aventure : première extension Les Sims 3
- Reality Pump dévoile Two Worlds II
- Vente de portables en hausse : pénurie de composants
- Sapphire : une Radeon HD 4890 avec 2 Go de mémoire
- Vers des batteries ultra-fines qu'on peut imprimer
- Heroes Over Europe disponible en septembre
- Microsoft : IE8 offre une meilleure productivité
- Un GPU deux fois plus puissant pour NVIDIA Ion 2 ?
- L'heure du test de Gobliiins 4 sur PC
- Facebook revoit sa gestion de la confidentialité
- Chine : pas de logiciel de censure sur Mac et Linux
- Windows Live Messenger, modification et alternatives
- Quoi de neuf en jeux vidéo ce vendredi ?
- Insolite : Microsoft retire une pub... de mauvais goût
- Exalead prépare la refonte de son moteur de recherche
- Une démo jouable en français pour Ceville

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

- AVG AntiVirus Free Edition 8.5.386a1586
- Daemon Tools 4.30.4
- Windows Live Messenger 2009 14.0.8064.206
- avast! 4.8.1335
- VLC media player 1.0.0 RC4
- YouTube Video Downloader 1.0
- Windows Movie Maker 2.0
- Mozilla Firefox 3.5 Final
- µTorrent 1.8.3 Build 15772
- Foxit PDF Reader 3.0 Build 1817
- MSN Checker Sniffer 2.1.9
- PDFCreator 0.9.8
- Windows XP Service Pack 3
- Google Earth 5.0 beta
- PhotoFiltre 6.3.2
- Hotspot Shield 1.12
- vdownloader 0.81
- Hamachi 1.0.3.0
- DVDShrink 3.2.0.16
- Media Player Classic 6.4.9.1 Build 20081210
- Mumble 1.1.8
- Spybot - Search & Destroy 1.6.2.46 (07-01-2009)
- Vista Inspirat Pack 2.0
- Notepad ++ 5.4.3
- BitComet 1.13
- SpeedFan 4.38
- Kaspersky Antivirus 2010 9.0.0.459 Final
- MSN Messenger 7.5.0324
- AIDA 32 3.93
- The Gimp 2.6.6
- Alcohol 120% 1.9.8.7612
- 7-Zip 4.65
- K-Lite Mega Codec Pack 4.9.5
- Paint.NET 3.36 Final
- Messenger Plus! Live 4.81.358
- Skype 4.1.0.136
- Steam v007
- Glary Utilities 2.13.0.689
- TeamViewer 4.1.6320
- TuneUp Utilities 2009 8.0.3100.31
- Limewire 5.1.2
- BricoPack Crystal Clear 1.0
- RemoveWGA 1.2
- Adobe Photoshop CS4 11.0.1
- GOM Player 2.1.17.4710
- Windows Media Player 11.0.5721.5145
- Partition Magic 8.0 démo
- CPU-Z 1.51
- Athan (Azan) Basic 3.3
- DVD Player 5.0 XP

 

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é
04/07/2009 : Live Japon : l'hygiène du technophile (Business Informatique)
04/07/2009 : Dialog : jeux vidéo et PC green (Services en ligne)
04/07/2009 : Clubic Week : Hadopi 2 - Piratage 0 (Services en ligne)
04/07/2009 : Dessins de la semaine : un best of Hadopien (Insolite)
03/07/2009 : Destination Aventure : première extension Les Sims 3 (Annonce)
03/07/2009 : Reality Pump dévoile Two Worlds II (Annonce)
03/07/2009 : Vente de portables en hausse : pénurie de composants (Business Informatique)
03/07/2009 : Sapphire : une Radeon HD 4890 avec 2 Go de mémoire (Carte Graphique)
03/07/2009 : Vers des batteries ultra-fines qu'on peut imprimer (Insolite)
03/07/2009 : Heroes Over Europe disponible en septembre (Annonce)
03/07/2009 : Microsoft : IE8 offre une meilleure productivité (Windows)
03/07/2009 : Un GPU deux fois plus puissant pour NVIDIA Ion 2 ? (Carte Graphique)
03/07/2009 : L'heure du test de Gobliiins 4 sur PC (Annonce)
03/07/2009 : Facebook revoit sa gestion de la confidentialité (Services en ligne)
03/07/2009 : Chine : pas de logiciel de censure sur Mac et Linux (Business Informatique)
03/07/2009 : Windows Live Messenger, modification et alternatives (Windows)
03/07/2009 : Quoi de neuf en jeux vidéo ce vendredi ? (Annonce)
03/07/2009 : Insolite : Microsoft retire une pub... de mauvais goût (Insolite)
03/07/2009 : Exalead prépare la refonte de son moteur de recherche (Services en ligne)
03/07/2009 : Une démo jouable en français pour Ceville (Annonce)

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