Cómo crear XML en Rails
En este post explicaré como crear un archivo XML en Rails, el cual podremos utilizar por ejemplo para generar un RSS. Lo haré mediante un ejemplo que muestre un listado de posts en formato XML.
Así pues, consideremos que tenemos la acción definida rss dentro del controlador de posts, costando un post de un título, una introducción y un contenido. El fichero de rutas quedará tal que así:
ActionController::Routing::Routes.draw do |map| map.resources :posts, :collection => {:rss => :get} map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format' end
Tendremos pues que definir un comportamiento para dicha acción en el controlador del siguiente modo:
class PostsController < ApplicationController ... def rss @posts = Post.find(:all) headers['Content-Type'] = 'application/xml' render :layout => false end end
Es bastante explicativo por sí mismo: Cómo respuesta a dicha acción, serviremos una respuesta con cabecera ‘application/xml’ y sin utilizar ningún layout.
Ahora vamos a crear el fichero xml en sí. Para ello, en vez de usar las típicas vistas de Ruby para html, las rhtml, vamos a usar unas especiales para xml, las rxml. Así pues, dentro de la carpetas de ‘views’ de posts creamos un fichero rss.xml tal que así:
xml.rss version => .0, xmlns:dc => http//purl.org/dc/elements/1.1 do xml.channel do @posts.each do |post| xml.item do |item| xml.title post.title xml.intro post.intro end end end end
Si visitamos http://localhost:3000/posts/rss tendremos nuestro XML. Es mejor mirar directamente el código fuente para comprobar el formato y así hacer los cambios que sean oportunos según las especificaciones del XML que deseemos generar.
Subscríbete