Un moyen simple pour faire défiler du flux rss sur une page asp.

Description

Je m'arrache les tifs depuis trois jours pour faire défiler des news
dans une textbox ou n'importe quoi de lisible :
entre l'extraction XML du flux (réservée à une élite !) et cette charognerie de javascript qui marche jamais (avec les âneries habituelles du style 'ligne 561 il manque le car "}" alors que ton script fait trois lignes....), il faut être de "bonne composition"....
Or, un certain Dmitry Robsman a pondu un control qui lit les Rss, mais surtout qui
se comporte comme un datasource. ça s'appelle RSSToolKit et c'est une petite merveille.
Vous pouvez aller voir ça sur son blog : http://blogs.msdn.com/dmitryr/

ce control (RSSDataSource) permet de recuperer les infos de n'importe quel flux rss. il
suffit ensuite de les envoyer dans un marquee (une zone de texte defilante) et le tour est joué.

bon le probléme a été d'extraire les news, puis de trouver le moyen de modifier le texte
du marquee. vu que c'est impossible, j'insere carrément un nouveau control dans la page avec les balises et le texte a afficher. pour agrémenter le truc, j'ajoute en plus un hyperlien qui pointe vers la page de l'info affichée.

pour faire fonctionner tout ça, il faut :
télécharger la dll : http://blogs.msdn.com/dmitryr/attachment/561200.ashx
copier les bouts de code qui suivent dans votre IDE VS2006.

bon, c'est du direct : pas de controle d'erreur ni rien.
et y a surement des bugs, mais ça marche au moins chez moi !
si vous trouvez plus simple pour afficher des news RSS dans une scrolling box,
je suis preneur.

Source / Exemple :


code VB.NET :

Imports System

'remplissage d'un gridview à partir du Control RssDatasource
'(vous pouvez utilisez un autre moyen pour éplucher le XML du RSS
'mais j'ai pas le temps de tricoter sur le sujet)

        Dim gv As New GridView
        gv.AutoGenerateColumns = True
        gv.DataSource = RssDataSource1
        gv.DataBind()

        Dim info As String
        Dim i As Integer

	'on parcourt tous les éléments du Rss
        For i = 0 To gv.Rows.Count - 1

	'là on concatene les differents news trouvés dans le flux Rss
	'avec l'info elle meme, la date, et petite cerise sur le gateau,
	'un lien vers le site fabriqué a la manivelle avec un bout de javascript
 	    
            info = info + "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Le " + gv.Rows(i).Cells(3).Text + "&nbsp;>>>&nbsp; " + gv.Rows(i).Cells(0).Text + "&nbsp; <a href=" & Chr(34) & gv.Rows(i).Cells(2).Text & Chr(34) & " onclick=" & Chr(34) & "yourfunction(); return false" & Chr(34) & ">Voir la suite</a>"
		
	    'en plus clair, l'info va ressembler à ça : le 25/12/2054 >>> le pere noel n'existe plus  [Voir la suite]     etc....

        Next

	'on balance le resultat (une string de 3 km de long mais on s'en fout)
	'dans un marquee, puis le tout dans un placeholder.  

        placeholder1.Controls.Add(New LiteralControl("<marquee>" & info & "</marquee>"))

	'vous pouvez modifier les attributs du marquee pour qu'il aille plus
	'vite, qu'il soit jaune ou vert ou bleu, qu'il saute au plafond etc...        
	'y a assez de doc la dessus sur le Web

    End Sub

Code a mettre dans la page Aspx :

/**** à mettre en declaration *********************/
<%@ Register Assembly="RssToolkit" Namespace="RssToolkit" TagPrefix="cc1" %>

/**** à mettre n'importe ou **********************/

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> 

<cc1:RssDataSource ID="RssDataSource1" runat="server" MaxItems="0" 
Url="http://www.liberation.fr/interactif/rss/actualites/"></cc1:RssDataSource>

/***********************************************

  • note : vous pouvez bien sur mettre l'url que vous voulez suivant vos centres d'interet.
  • note 2 : oubliez pas non plus de déclarer la dll 'rsstoolkit.dll'
                                                                                              • /

Conclusion :


j'ai joint un exemple de site Web ultra simple que vous pouvez utiliser directement.

j'espere que ça servira a kekun....

bon developpement !

Lpg

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.