Sindicación RSS

Tutorial sobre cómo generar automáticamente el feed RSS para la sindicación de contenido en una Web utilizando la tecnología .NET
Se describe el método empleado en esta Web (antes de usar un CMS estándar) para generar automáticamente un archivo RSS que recoge las actualizaciones que se van publicando. Un método tan sencillo como útil que puede servir para implementar en tu Sitio Web.

RSS se ha convertido en una utilidad muy habitual no solo en los blog’s sino también en muchos portales de noticias y demás Web’s
Si necesitas profundizar sobre RSS, ojea los enlaces al final de este artículo o a través de Internet es muy fácil encontrar amplia información.

Una breve descripción de la terminología que engloba este servicio, seria la siguiente:

  • Feed: conjunto de información que se pretende distribuir.
  • RSS (Really Simple Syndication – Sindicación Realmente Simple): formato basado en el estándar XML en el que se distribuye el feed.
  • Sindicar contenido: proceso mediante el que un software cliente RSS obtiene el feed
  • Aggregator: software cliente RSS, como RSSBandit o NewsDesk

Y tras esta rápida reseña vamos al tema que nos ocupa.

Mantener un archivo .rss de manera manual con las nuevas actualizaciones que vamos publicando, es tarea fácil para un pequeño Sitio Web, pero si esas actualizaciones son frecuentes, o se trata de una Web algo más grande, esa tarea se convierte en un proceso algo tedioso.

Cuando decidí incorporar RSS a esta Web, dado mí bajo nivel en programación, en principio era mi intención hacerlo de manera manual, ya que la estructura de un archivo .RSS es realmente sencilla, aparte que soy bastante cabezota y de los que aun pica HTML “a pelo”.
Pero, analizando un poco la estructura de mi Web, documentándome sobre el soporte XML de ASP.NET y poco más, pronto me di cuenta que no era tan difícil automatizar totalmente este proceso, por lo que básicamente sería:

  • Mediante la clase XmlTextWriter generar el contenido XML con el esquema que RSS necesita.
  • Crear un DataSet con el contenido de la tabla de anuncios (ahí guardo los posts que aparecen en la página principal de esta Web)
  • XmlTextWriter debe iterar sobre el DataSet para crear los correspondientes Ítems
  • Por último mostrar los resultados en formato XML.

Conociendo el planteamiento veamos el código generado para ello con los comentarios sobre el mismo:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Declara el escritor
Dim Escritor = New XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8)

'Genera el encabezado del archivo RSS con la información de nuestro Sitio Web
Escritor.WriteStartDocument()
Escritor.WriteComment("www.raulserrano.net - RSS generado automáticamente")
Escritor.WriteStartElement("rss")
Escritor.WriteAttributeString("version", "2.0")
Escritor.WriteStartElement("channel")
Escritor.WriteElementString("title", "www.raulserrano.net")
Escritor.WriteElementString("link", "http://www.raulserrano.net")
Escritor.WriteElementString("description", "Portal sobre tecnologias Microsoft y actualidad informática")

'Conecta a la BD y vuelca los datos a un DataTable
Dim Conexion As OleDbConnection
Dim Comando As OleDbDataAdapter
Dim ds As DataSet
Dim tblPost As DataTable
Dim registro, numrows As Integer
Dim strSQL As String

strSQL = "SELECT titulo, link, descripcion, fecha FROM posts ORDER BY fecha_pub DESC;"
Conexion = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=x:archvo.mdb")
Comando = New OleDbDataAdapter(strSQL, Conexion)
ds = New DataSet
Comando.Fill(ds)
tblPost = New DataTable
tblPost = ds.Tables(0)
numrows = tblPost.Rows.Count

'Itera por el DataTable para crear los correspondientes Items
For registro = 0 To numrows - 1
AgregarRSS(Escritor, tblPost.Rows(registro).Item("titulo"), _
tblPost.Rows(registro).Item("link"), _
tblPost.Rows(registro).Item("descipcion"), _
tblPost.Rows(registro).Item("fecha"))
Next registro

'Finaliza el archivo RSS
Escritor.WriteEndElement()
Escritor.WriteEndElement()
Escritor.WriteEndDocument()
Escritor.Flush()
Escritor.Close()

'Codifica y envía el archivo RSS
Response.ContentEncoding = System.Text.Encoding.UTF8
Response.ContentType = "text/xml"
Response.Cache.SetCacheability(HttpCacheability.Public)
Response.End()
End Sub

Public Function AgregarRSS(ByVal Escritor As XmlTextWriter, ByVal titulo As String, ByVal link As String, ByVal descripcion As String, ByVal fecha As String)
'Crea un nuevo elemento
Escritor.WriteStartElement("item")

'Añade subelementos
Escritor.WriteElementString("title", titulo)
Escritor.WriteElementString("link", link)
Escritor.WriteElementString("description", descripcion)
Escritor.WriteElementString("pubDate", fecha)

'Finaliza el elemento
Escritor.WriteEndElement()
Return Escritor
End Function

Más información

Para la realizar este artículo me he basado en la documentación disponible en Internet, especialmente útil el artículo de Carlos Carmona de Scour Design:

RSS 2.0 Dinámicamente. XmlTextWriter (Visual C#)

Documentación adicional:

Suscríbete al blog

¿Te ha gustado este artículo? Suscríbete al blog!

Recibe cómodamente por correo electrónico los nuevos artículos que vaya publicando (recibirás sólo contenido, nada de publicidad)

Privacidad:: no comparto ni vendo datos de los suscriptores

3 Comentarios


  1. Domingo
    06/07/2006
    15:55

    Saludos. Mas que un comentario es una pregunta. Se que tenias en alguna Web anterior una serie de archivos de registro para solucionar los problemas mas comunes de Windows XP con un par de clics, pero no los veo en esta Web. ?No Tienes la intencion de ponerlos en descargas? Gracias


    • Raúl S.
      17/07/2006
      15:59

      Hola Domingo, pretendía restructurar toda la sección Descargas, pero uff… Si te parece de momento, haré algo rapidito con el mismo contenido que había, estate pendiente que me comprometo a tenerlo listo antes de final de esta semana. Lo siento.


  2. santiag0
    21/03/2009
    21:59

    Saludos raul, muy interesante el contenido, estoy tratando de implementar RSS en mi portal, muy util tu información.

Escribe un comentario