supinfo
Orientez-vous vers les métiers du numérique, des métiers qui recrutent dans tous les secteurs d’activités  metiers-du-numerique.fr
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 :

- Free : offre gratuite pour Canal+ Le Bouquet
- Europe : Microsoft fait une nouvelle fois appel
- Dialog : Spécial Jeux Vidéo avec GTA 4 & NVidia
- Quoi de neuf en jeux vidéo ce samedi ?
- La démo PC de Race Driver : GRID est disponible
- Actualité de la semaine résumée en 1 BD + 3 dessins
- Live Japon : de Microsoft à Softbank
- Clubic Week : le web contre la riposte graduée
- Billets d'avion et Internet : l'UE s'en mêle
- Réponses d'experts : l'été, ennemi de vos machines
- Medion : détails sur un des concurrents du Eee PC
- Street Gears, un MMO en rollers...
- Une vidéo "Press Start" pour Darkness Within
- AOL Radio et Last.fm font cause commune
- Victoire des studios ? TorrentSpy doit 111 M$
- Quoi de neuf en jeux vidéo ce vendredi ?
- OpenOffice.org 3 beta disponible en téléchargement
- Street View : les Google Cars sillonnent la France
- EA annonce Le Seigneur des Anneaux Conquest
- Microsoft s'embarque avec Huyndaï-Kia

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

- avast! 4.8.1169
- Windows XP Service Pack 3
- Daemon Tools 4.12.3
- AVG AntiVirus Free Edition 8.0.100
- VLC 0.8.6f
- Windows Live Messenger 8.5
- TerraExplorer 5.0.2.10 Basic
- Windows Movie Maker 2.0
- Winrar 3.71
- Vista Inspirat Pack 2.0
- eMule 0.48a
- Antivir Personal Edition 8.1.00.295
- BitComet 1.01
- Photoshop CS3 Evaluation
- Spybot - Search & Destroy 1.5.2
- Mozilla Firefox 2.0.0.14
- Foxit PDF Reader 2.3 Build 2822
- YouTube Video Downloader 1.0
- Everest Ultimate 4.50 Build 1330 Final
- Wow Cartographe 1.07
- Notepad ++ 4.8.5
- TVAnts 1.0.0.59 build 0834
- Sopcast 3.0.1
- Google Earth 4.3.7204 beta
- AIDA 32 3.93
- µTorrent 1.7.7
- DVDShrink 3.2.0.16
- MSN Messenger 7.5.0324
- Media Player Classic 6.4.9.1 Beta 20080308
- MSN Checker Sniffer 2.1.9
- SpeedFan 4.34
- Windows Media Player 11.0.5721.5145
- BricoPack Crystal Clear 1.0
- Limewire 4.14.10
- OpenOffice.org 2.4.0
- Flash Player 9.0.124.0
- Gimp Mode 2.4.2
- Alcohol 120% 1.9.7.6221
- Paint.NET 3.31
- Messenger Plus! Live 4.60.326
- PhotoFiltre 6.3.1
- PDFCreator 0.9.5
- nLite 1.4
- CPU-Z 1.44.2
- Kaspersky Antivirus 7.0.1.325
- adsl TV 1.99+
- The Gimp 2.4.5
- BurnAware Free Edition 1.2.9
- 7-Zip 4.57
- Free Download Manager 2.5.755

 

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é
12/05/2008 : Free : offre gratuite pour Canal+ Le Bouquet (FAI)
12/05/2008 : Europe : Microsoft fait une nouvelle fois appel (Business Informatique)
11/05/2008 : Dialog : Spécial Jeux Vidéo avec GTA 4 & NVidia (Services en ligne)
10/05/2008 : Quoi de neuf en jeux vidéo ce samedi ? (Annonce)
10/05/2008 : La démo PC de Race Driver : GRID est disponible (Annonce)
10/05/2008 : Actualité de la semaine résumée en 1 BD + 3 dessins (Insolite)
10/05/2008 : Live Japon : de Microsoft à Softbank (Business Informatique)
10/05/2008 : Clubic Week : le web contre la riposte graduée (Services en ligne)
09/05/2008 : Billets d'avion et Internet : l'UE s'en mêle (Business Internet)
09/05/2008 : Réponses d'experts : l'été, ennemi de vos machines (Boitier)
09/05/2008 : Medion : détails sur un des concurrents du Eee PC (Ordinateur portable)
09/05/2008 : Street Gears, un MMO en rollers... (Annonce)
09/05/2008 : Une vidéo "Press Start" pour Darkness Within (Annonce)
09/05/2008 : AOL Radio et Last.fm font cause commune (Business Informatique)
09/05/2008 : Victoire des studios ? TorrentSpy doit 111 M$ (Business Internet)
09/05/2008 : Quoi de neuf en jeux vidéo ce vendredi ? (Annonce)
09/05/2008 : OpenOffice.org 3 beta disponible en téléchargement (Windows)
09/05/2008 : Street View : les Google Cars sillonnent la France (Services en ligne)
09/05/2008 : EA annonce Le Seigneur des Anneaux Conquest (Annonce)
09/05/2008 : Microsoft s'embarque avec Huyndaï-Kia (Business Informatique)

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