Il est particulièrement simple, en Ruby, de parser un flux RSS.
Tout d'abord, dans le contrôleur, nous chargeons le contenu et le parsons :
require 'rss'
require 'open-uri'
@content = RSS::Parser.parse(open('http://feeds2.feedburner.com/DmathieuFr'), false)
La variable @content contiendra alors votre flux RSS parsé et chacun de ses éléments accessible.
Par la suite dans votre vue, vous pouvez récupérer les éléments de votre flux :
<ul>
<% @content.items.each do |i| %>
<li><%= link_to i.title, i.link %><br /><%= i.description %></li>
<% end %>
</ul>
Nous bouclons sur chaque élément et affichons un lien pointant vers la balise link et ayant le titre; suivi du contenu.
Cela ne fonctionne évidemment que pour les flus RSS. Pour le XML en général, il faut utiliser REXML.
Pour finir (et parce que c'est dans le titre), il y a une petite exception pour le flux RSS de Flickr. En effet, avec celui-ci, le parseur ne trouvera pas l'élément dateTaken mais date.Taken. Il faut donc remplacer l'un par l'autre.
Voici donc le code de mon contrôleur :
@content = RSS::Parser.parse(open('http://api.flickr.com/services/feeds/photos_public.gne?id=23186094@N07&lang=fr-fr&format=rss_200').read.gsub!('date.Taken', 'dateTaken'), false)
Et dans ma vue, pour afficher les dernières photos postées sur mon pool :
<ul>
<% @content.items.each do |i| %>
<li><%= i.description %></li>
<% end %>
</ul>
Et vous pouvez même voir la chose en action ! Sur mon portfolio :)


Commentaires