Affichage des liens rss

Description

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

Codes Sources

A voir également

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.