Affichage des liens rss

Soyez le premier à donner votre avis sur cette source.

Vue 10 364 fois - Téléchargée 437 fois

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

Ajouter un commentaire Commentaires
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
2
Pour afficher cela dans un fichier swf, simplement dans un movie clip, tu lui fais un tell target, par exemple où tu lui indiques des variables AS correspondant à tes variables php.
Messages postés
4
Date d'inscription
mardi 12 septembre 2006
Statut
Membre
Dernière intervention
23 avril 2007

Bonjour,
A propos de ce script, en ce qui me concerne, il marche impeccablement bien et m?apporte quelques variantes au peu que je connaissais sur le sujet, rien que pour cela MERCI, mon seul soucis est que je cherche un script permettant d'arriver à un résultat similaire mais ? je voudrai que le contenu de la page « rsspointe22.php » s'affiche dans un swf . De façon a ajouter « le » coté joli d'une animation flash. Imaginons par exemple un movie clip doté d'une paire de scroll qui permettrai de faire défiler le contenu du fichier « rsspointe22.php ».
Messages postés
2
Date d'inscription
mercredi 3 août 2005
Statut
Membre
Dernière intervention
23 avril 2007

Il n'y pas d'installation nécessaire pour utiliser les fonctions du module Dom , elles font parties du coeur de PHP5.
la classe DomDocument est dans le module Dom de PHP5.
et le module Dom est intégré à PHP5 il n'y a rien à installer.
j'utilise PHP5 et wamp pour tester les programmes PHP5.
Messages postés
12
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2008

J'ai ce message d'erreur quand je lance ma page

Fatal error: Cannot instantiate non-existent class: domdocument in d:\program files\easyphp1-8\www\phpcs_affichage-liens-rss_42369\rsspointe22.php on line 14

Merci

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.