RSS Comment récupérer le contenu d'un fichier XML qui sert pour les liens RSS ?
avec une seule fonction en mode récursive .
1 création d'une classe DomDocument $domnodelist = new DomDocument() ;
2 une méthode de la classe ($domnodelist) télécharge le fichier XML d'un lien RSS ($rss) (exemple içi d'un lien du monde )
$domnodelist->loadXML ($rss);
3 Appel de la fonction récursive ==> resuite ( $domnodelist->firstChild )
resuite($domnodelist->firstChild ) ;
à partir du premier noeud de l'arbre du fichier XML
4 dans la fonction recursive on affiche tout les items ( du fichier XML d'un lien RSS )
à l'interieur des item on affiche ce qu'on veut le titre la description la date et la photo de l'enclosure
il y a plusieurs exemples de liens RSS
Source / Exemple :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Page title</title>
</head>
<body>
<?php
// à la une LEMONDE http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml
$fichier_xml = "http://www.lemonde.fr/rss/sequence/0,2-3208,1-0,0.xml";
//$fichier_xml = "http://backend.userland.com/rss";
$rss = file_get_contents($fichier_xml);
$domnodelist = new DomDocument() ;
$domnodelist->loadXML ($rss);
$racine=$domnodelist->documentElement ;
$domnodelist->save ('rsslemonde1.xml'); // sauvegarde en fichier.xml qui marche
resuite($domnodelist->firstChild ) ;
// http://backend.userland.com/rss
$fichier_xml = "http://www.lemonde.fr/rss/sequence/0,2-3210,1-0,0.xml";
//$fichier_xml = "http://backend.userland.com/rss";
$rss = file_get_contents($fichier_xml);
$domnodelist = new DomDocument() ;
$domnodelist->loadXML ($rss);
$racine=$domnodelist->documentElement ;
$domnodelist->save ('rsslemonde12.xml'); // sauvegarde en fichier.xml qui marche
resuite($domnodelist->firstChild ) ;
// http://www.lemonde.fr/rss/sequence/0,2-3246,1-0,0.xml
// http://www.lemonde.fr/rss/sequence/0,2-3244,1-0,0.xml sciences
$fichier_xml = "http://www.lemonde.fr/rss/sequence/0,2-3244,1-0,0.xml";
//$fichier_xml = "http://backend.userland.com/rss";
$rss = file_get_contents($fichier_xml);
$domnodelist = new DomDocument() ;
$domnodelist->loadXML ($rss);
$racine=$domnodelist->documentElement ;
resuite($domnodelist->firstChild ) ;
// http://www.lemonde.fr/rss/sequence/0,2-651865,1-0,0.xml technologie
$fichier_xml = "http://www.lemonde.fr/rss/sequence/0,2-651865,1-0,0.xml";
//$fichier_xml = "http://backend.userland.com/rss";
$rss = file_get_contents($fichier_xml);
$domnodelist = new DomDocument() ;
$domnodelist->loadXML ($rss);
$racine=$domnodelist->documentElement ;
resuite($domnodelist->firstChild ) ;
// http://www.lemonde.fr/rss/sequence/0,2-3246,1-0,0.xml culture
$fichier_xml = "http://www.lemonde.fr/rss/sequence/0,2-3246,1-0,0.xml";
//$fichier_xml = "http://backend.userland.com/rss";
$rss = file_get_contents($fichier_xml);
$domnodelist = new DomDocument() ;
$domnodelist->loadXML ($rss);
$racine=$domnodelist->documentElement ;
resuite($domnodelist->firstChild ) ;
$fichier_xml = "http://www.lemonde.fr/rss/sequence/0,2-3238,1-0,0.xml";
//$fichier_xml = "http://backend.userland.com/rss";
$rss = file_get_contents($fichier_xml);
$domnodelist = new DomDocument() ;
$domnodelist->loadXML ($rss);
$racine=$domnodelist->documentElement ;
resuite($domnodelist->firstChild ) ;
// http://radiofrance-podcast.net/podcast/rss_14864.xml
$fichier_xml = "http://radiofrance-podcast.net/podcast/rss_14864.xml";
//$fichier_xml = "http://backend.userland.com/rss";
$rss = file_get_contents($fichier_xml);
$domnodelist = new DomDocument() ;
$domnodelist->loadXML ($rss);
$racine=$domnodelist->documentElement ;
resuite($domnodelist->firstChild ) ;
function resuite($node) {
if ($node != null ){
if ($node->nodeName == 'channel' ) {
foreach($node->childNodes as $nodules){
if ($nodules->nodeName =='title' ){
$title = utf8_decode( $nodules->nodeValue );
}
if ($nodules->nodeName =='link' ){
$link = $nodules->nodeValue ;
}
if ($nodules->nodeName =='description' ){
$description= utf8_decode( $nodules->nodeValue );
}
if ($nodules->nodeName =='image' ){
foreach($nodules->childNodes as $noduless){
if ($noduless->nodeName =='url' ){
$urlimage = $noduless->nodeValue ;
}
}
}
//--------- fin nodules image url
if ($nodules->nodeName =='pubDate' ){
$pubDate= $nodules->nodeValue ;
}
}
// echo '<br>'.$title;
echo '<li><a href="'.$link.'">' , $title ,'</a></li>' ;
echo '<br>'.$description;
echo '<li><a href="'.$urlimage.'">' ,'<img src="'.$urlimage.'" title="'.$pubDate.'" />' ,'</a></li>' ; // affiche image avec url
echo ' '.$pubDate ; // affiche la dâte de mise à jour de l'article
}
if($node->nodeName =='item'){
foreach($node->childNodes as $nodules){
if ($nodules->nodeName =='title' ){
$title = utf8_decode( $nodules->nodeValue );
}
if ($nodules->nodeName =='link' ){
$link = $nodules->nodeValue ;
}
if ($nodules->nodeName =='description' ){
$description = utf8_decode($nodules->nodeValue ) ;
}
if ($nodules->nodeName =='pubDate' ){
$pubDate= $nodules->nodeValue ;
}
if ($nodules->nodeName =='enclosure' ){
foreach($nodules->attributes as $nodules){
if($nodules->nodeName == 'url' ){
$url =$nodules->nodeValue ;
}
}
echo '<li><a href="'.$link.'">' ,'<img src="'.$url.'" title="'.$pubDate.'"/>' ,'</a></li>' ; // affiche image avec url
}
}
echo '<a href="'.$link.'" title="'.$description.'">' , "'.$title.'" ,'</a>',
'<h6 style="font-size:8pt; color:#804000"> '.$pubDate ,'</h6>'; // affiche titre avec url
}
resuite($node->firstChild );
resuite($node->nextSibling );
}
return -1 ;
}
?>
</body>
</html>
Conclusion :
fonction resuite ($node)
if ($node != null ){ // test si le neud existe ou s'il est null
//-------------
Affichage du contenu de chaque item trouvé
//-------------
resuite($node->firstChild ); // appel récursif
resuite($node->nextSibling );// appel récursif
}
return -1 ;
}
pour de plus amples explications : christian.baklouti@wanadoo.fr
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.