Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN MOYEN SIMPLE POUR FAIRE DÉFILER DU FLUX RSS SUR UNE PAGE ASP.


Information sur la source

Description

Cliquez pour voir la capture en taille normale
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

  • 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'
  • ***********************************************/
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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Alain Proviste le 27/09/2006 19:40:20 administrateur CS

héhé c'est pas si dur que ça de parser les rss, pas besoin d'une usine à gaz comme rssdotnet ou rsstoolkit. regarde codessources justement, on a évité au max les composants externes, tout est fait maison, et as tu déjà vu un rss, externe ou interne, dérailler :p

signaler à un administrateur
Commentaire de jesusonline le 29/09/2006 14:35:23 administrateur CS

Bonjour,

Pas d'accord avec toi proviste le RSS toolkit est vraiment bien foutu on l'a meme utilisé sur la partie emploi de CodeS-SourceS ;-)

Par contre CodeS-SourceS n'est pas un dépotoire d'astuces, en lisant ta source j'ai l'impression que tu n'as pas le temps et pas l'envie de t'embeter à faire une source compléte, si tu pouvais modifier ta source ce serait sympa.

Pour ce qui est de JavaScript ou le parsing de XML il ne faut pas dire que ca marche jamais, parser un XML en JavaScript ne me fais absolument pas peur, dit juste que tu ne sais pas faire car trop compliqué pour toi ;-)

signaler à un administrateur
Commentaire de Alain Proviste le 29/09/2006 14:46:52 administrateur CS

ah oui mais le rsstoolkit est sorti bien après ce que j'ai fait !!

signaler à un administrateur
Commentaire de tuyo2poil le 29/09/2006 15:04:16

j'ai mis un petit site web complet en zip : tu veux que je fasse quoi de plus ? ceux qui ont besoin du truc vont bien se débrouiller avec !

et si ce site n'est effectivement pas un "dépotoir", c'est pas non plus le sanctuaire de la perfection : on y colle nos snippets, et on echange nos astuces...

concernant vos remarques sur le javascript, vous oubliez un détail : si il faut passer trois jours pour faire fonctionner un code de 10 lignes, qu'on soit mauvais ou pas, autant faire de l'assembleur.

et pour le XML je reconnais que ça m'a vite pomper le jonglage entre les elements les nodes les items et toute la clique. j'suis pas seulement nul, mais pressé aussi !

bon WE les gars.

signaler à un administrateur
Commentaire de jesusonline le 29/09/2006 15:14:55 administrateur CS

C'est pas parce que tu as une mauvaise experience en JS que c'est une généralité. J'ai déjà écrit des classes javascript de plusieurs milliers de lignes et je n'ai pas mis beaucoup de temps ;-)

Mais je reconnais que le RSS toolkit est trés bien car justement c'est rapide et simple à mettre en place.

En ce qui concerne ta source ce serait bien de détailler un petit peu et d'employez un autre ton.

"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"...."

"'(vous pouvez utilisez un autre moyen pour éplucher le XML du RSS
'mais j'ai pas le temps de tricoter sur le sujet) "

Ensuite un lien vers le blog de Scott pour appronfondir le sujet aurait été pas mal :-)

http://weblogs.asp.net/scottgu/archive/2006/02/22/Awesome-ASP.NET-2.0-RSS-Tool_2D00_Kit-Released.aspx


PS : Proviste oui le rss toolkit n'existait pas quand tu avais fais le parseur pour CS ;-)

signaler à un administrateur
Commentaire de tuyo2poil le 29/09/2006 15:28:51

dis donc Jésus, tu te prends pas un peu pour le vrai ?
j'ai mis un lien vers le blog du créateur du RssToolkit : ton Scott je sais meme pas qui c'est...

et mon "ton" n'est qu'argotique, pas grossier ou agressif.
et puis quoi, tu vas pas nous faire un camembert pour ce pauvre bout de code dont tous le monde se fiche ! y a des choses beaucoup plus importantes dans la vie ! demande a un tetraplégique si il trouve mon code trop ceci ou trop cela ? et bin tu sais pas, y s'en bat les cacahuétes le pauvre ! et nous deux on est là comme des enfants gatés à tartiner des salades sur un sujet dont la portée dépasse pas la distance de planck...

signaler à un administrateur
Commentaire de jesusonline le 30/09/2006 11:05:19 administrateur CS

Scott Guthrie est le "Chef" des developpeurs de la plate forme .net, il était le chef de la division asp.net lors de sa création, c'est un peu le papa d'ASP.net

Si je cite son blog c'est que c'est la seule documentation web qui existe sur le rss toolkit et sans son post c'est trés difficile de comprendre commment ca fonctionne et ta source n'aide pas non plus.

Bref, parlons plutot de ta source. Ce que tu veux faire c'est afficher les derniers news dans une horrible balise <marquee> (qui est obsolete et trés agacante), OK pourquoi pas.
Pour cela regardons comment tu t'y prends, tu as un mis <rssDatasource pour pouvoir binder la source de donnée a un gridview et ensuite tu boucles sur les lignes du gridview !!! :| te rend tu compte des cout que ca engendre de créer un gridview dynamique de le binder tout ca pour recuperer des données que tu aurais pu récuperer directement à partir du rssdatasource ??? niveau perf c'est vraiment horrible.

ensuite tu te sert de AutoGenerateColumns="true" (normal, créer des colonnes dynamiquement dans un gridview c'est pas facile) cela veut dire que si on a un RSS ou l'ordre des elements est différent de celui que tu attends cela plante ! Le RSSDataSource est beaucoup plus puissant que ta simple bidouille !

Je ne fais pas que critiquer sans raison, donc voici un exemple  qui fait exactement la meme chose que toi et surtout qui fonctionnera sur tous les RSS ET avec des perfs bien meilleurs :

dans ta page tu mets :
        <marquee id="HorribleBalise" runat="server"></marquee>

et dans le code behind :
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim channel As RssToolkit.GenericRssChannel
        channel = RssToolkit.GenericRssChannel.LoadChannel("http://blogs.developpeur.org/MainFeed.aspx")

        Dim sb As New StringBuilder()

        For i As Integer = 0 To channel.Items.Count - 1
            Dim Item As RssToolkit.GenericRssElement = channel.Items(i)
            sb.AppendFormat("Le {2:d} <a href=""{0}"" title=""{1}"">{1}</a>", Item("link"), Item("title"), CDate(Item("pubDate")))
            If i < (channel.Items.Count - 1) Then
                sb.Append(" - ")
            End If
        Next

        HorribleBalise.InnerHtml = sb.ToString()

    End Sub

En faisant comme cela on a utilisé 10% du RSSDatasource ! Là ou il est interessant c'est quand on utilise l'outil Rssdl qui permet de créer des rss typé donc pas besoin d'utiliser le item("title") mais directement item.title et surtout pas besoin de faire une conversion de la date avec un CDate puisque le flux sera typé. Les exemples d'utilisation de rssdl sont justement dans le blog de Scott Guthrie et je ne suis pas sur que tu l'avais vu ;-)

Maintenant il serait bien que tu modifies ta source en t'inspirant de mon code et ou en utilisant rssdl.


Cyril

PS : quand a tes propos sur JavaScript ce serait bien que tu les retire de l'introduction du code, je suis un fervent défenseur de ce merveuilleux langage et ce que tu écrit montre que tu ne le connais absolument pas.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Lire flux RSS [ par matlocker ] Bonjour a tous,Je voudrais ajouter&nbsp;le flux RSS present sur ce site et le mettre sur le miens. Je suis en ASP.NET.Quelqu'un pourrais me mettre sur RSS et publication [ par gyzmo222 ] Salut,Mon probl&#232;me n'est surement pas tr&#232;s compliqu&#233; mais je ne m'y connais vraiment pas en rss.J'ai r&#233;ussi &#224; cr&#233;er un r Connection flux RSS : System error: -2147012867 [ par asetti ] Bonjour,Je voudrais ajouter à mon site web en ASP un flux rss.J'ai donc télécharger des codes ASP (présent et sur ce site et sur d'autre) et je les ai flux RSS [ par imedgamra ] bonjour tout le monde,je suis en train de faire un projet supervision réseau (par un logiciel qui utilise une base de donnée SQLServer) avec affichage intégrer un flux rss au sein application réseau [ par marmarak ] miraj'ai besoin de savoir comment intégrer un flux rss au sein d'une application réseau contenantles mises à jour des équipements  qui se trouvent  da flux rss sur page .asp [ par sliverdust ] Bonjour,j'ai utilisé le script  Générer un flux RSS en asp3.En utilisant le script que j'ai légèrement modifier pour l'adapter à mon cas(base access). comment créer un flux rss dynamique en asp [ par sliverdust ] Bonjour, je désire créer un flux rss dynamique en asp avec une base de donnée access. est ce que c'est possible ?? si oui comment procéder ?? merci po Scroll d'une div CSS + Saut de ligne images [ par Centauriel ] Bonjour,J'ai deux petits problèmes à vous soumettre concernant le css, si vous voulez bien prendre une chaise  :Voila mon premier problème :J'ai achet Afficher flux XML avec XSL [ par matmuth ] Bonjour à tous,J'ai une requête qui me retourne un flux XML sous forme de String.Ce flux XML contient le lien vers un XSLT qui transforme le XML en HT


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.