<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Raúl Serrano &#187; Desarrollo</title>
	<atom:link href="http://www.raulserrano.net/tag/desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.raulserrano.net</link>
	<description>Blog sobre tecnología y de actualidad informática</description>
	<lastBuildDate>Thu, 02 Feb 2012 07:13:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Sindicación RSS</title>
		<link>http://www.raulserrano.net/2005/12/sindicacion-rss/</link>
		<comments>http://www.raulserrano.net/2005/12/sindicacion-rss/#comments</comments>
		<pubDate>Mon, 12 Dec 2005 11:00:00 +0000</pubDate>
		<dc:creator>Raúl S.</dc:creator>
				<category><![CDATA[Articulos]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Feed]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://localhost/blog/?p=28</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Tutorial sobre cómo generar automáticamente el feed <acronym title="Really Simple Syndication – Sindicación Realmente Simple">RSS</acronym> para la sindicación de contenido en una Web utilizando la tecnología <em>.NET</em><br />
Se describe el método empleado en esta Web (antes de usar un <acronym title="Content Management System - Sistema de Gestión de Contenido">CMS</acronym> estándar) para generar automáticamente un archivo <em>RSS</em> que recoge las actualizaciones que se van publicando. Un método tan sencillo como útil que puede servir para implementar en tu Sitio Web.</p>
<p><span id="more-28"></span></p>
<p><em>RSS</em> se ha convertido en una utilidad muy habitual no solo en los <dfn title="Sitio web con publicacoines periódicas y ordenados cronologicamente, temática particular">blog’s</dfn> sino también en muchos portales de noticias y demás Web’s<br />
Si necesitas profundizar sobre <em>RSS</em>, ojea los enlaces al final de este artículo o a través de Internet es muy fácil encontrar amplia información.</p>
<p>Una breve descripción de la terminología que engloba este servicio, seria la siguiente:</p>
<ul>
<li>Feed: conjunto de información que se pretende distribuir.</li>
<li>RSS (Really Simple Syndication – Sindicación Realmente Simple): formato basado en el estándar <acronym title="eXtensible Markup Language ">XML</acronym> en el que se distribuye el feed.</li>
<li>Sindicar contenido: proceso mediante el que un software cliente RSS obtiene el feed</li>
<li>Aggregator: software cliente RSS, como <a class="ext" title="Descarga RSSBandit" href="http://www.rssbandit.org">RSSBandit</a> o <a title="Descarga NewsDesk" href="http://www.wildgrape.net">NewsDesk</a></li>
</ul>
<p>Y tras esta rápida reseña vamos al tema que nos ocupa.</p>
<p>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.</p>
<p>Cuando decidí incorporar <em>RSS</em> 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 <acronym title="HyperText Markup Language - Lenguaje de Marcas Hipertextuales">HTML</acronym> &#8220;a pelo&#8221;.<br />
Pero, analizando un poco la estructura de mi Web, documentándome sobre el soporte <acronym title="eXtensible Markup Language ">XML</acronym> de <dfn title="Tecnologia sucesora de Active Server Pages, basada en plataforma .NET">ASP.NET</dfn> 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:</p>
<ul>
<li>Mediante la clase <a class="ext" title="XmlTextWriter (Clase)" href="http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpref/html/frlrfsystemxmlxmltextwriterclasstopic.asp">XmlTextWriter</a> generar el contenido <em>XML</em> con el esquema que <em>RSS</em> necesita.</li>
<li>Crear un <a class="ext" title="Crear y utilizar DataSets" href="http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpguide/html/cpconcreatingusingdatasets.asp">DataSet</a> con el contenido de la tabla de anuncios (ahí guardo los posts que aparecen en la página principal de esta Web)</li>
<li><em>XmlTextWriter</em> debe iterar sobre el <em>DataSet</em> para crear los correspondientes Ítems</li>
<li>Por último mostrar los resultados en formato <em>XML</em>.</li>
</ul>
<p>Conociendo el planteamiento veamos el código generado para ello con los comentarios sobre el mismo:</p>
<pre>
<code>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
<span style="color:#888">'Declara el escritor</span>
Dim Escritor = New XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8)

<span style="color:#888">'Genera el encabezado del archivo RSS con la información de nuestro Sitio Web</span>
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")

<span style="color:#888">'Conecta a la BD y vuelca los datos a un DataTable</span>
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

<span style="color:#888">'Itera por el DataTable para crear los correspondientes Items</span>
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

<span style="color:#888">'Finaliza el archivo RSS</span>
Escritor.WriteEndElement()
Escritor.WriteEndElement()
Escritor.WriteEndDocument()
Escritor.Flush()
Escritor.Close()

<span style="color:#888">'Codifica y envía el archivo RSS</span>
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)
<span style="color:#888">'Crea un nuevo elemento</span>
Escritor.WriteStartElement("item")

<span style="color:#888">'Añade subelementos</span>
Escritor.WriteElementString("title", titulo)
Escritor.WriteElementString("link", link)
Escritor.WriteElementString("description", descripcion)
Escritor.WriteElementString("pubDate", fecha)

<span style="color:#888">'Finaliza el elemento</span>
Escritor.WriteEndElement()
Return Escritor
End Function
</code>
</pre>
<p><strong>Más información</strong></p>
<p>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 <a class="ext" title="Diseño de páginas web, Diseño gráfico, Artículos y Tutoriales - xhtml, css, W3C!" href="http://www.scourdesign.com/">Scour Design</a>:</p>
<p><a class="ext" title="RSS 2.0 Dinámicamente. XmlTextWriter (Visual C#)" href="http://www.scourdesign.com/articulos/tutoriales/net/5.php">RSS 2.0 Dinámicamente. XmlTextWriter (Visual C#)</a></p>
<p>Documentación adicional:</p>
<ul>
<li><a class="ext" title="Todo acerca de Blogs y RSS" href="http://www.microsoft.com/spanish/msdn/articulos/archivo/070404/voices/blogs_rss.asp">Todo acerca de Blogs y RSS</a></li>
<li><a class="ext" title="How to Create an RSS Feed With Notepad, a Web Server, and a Beer" href="http://www.downes.ca/cgi-bin/page.cgi?db=post&amp;q=crdate=1059503386&amp;format=full">How to Create an RSS Feed With Notepad, a Web Server, and a Beer</a></li>
<li><a class="ext" title="MSDN Library: XmlTextWriter (Clase)" href="http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpref/html/frlrfsystemxmlxmltextwriterclasstopic.asp">MSDN Library: XmlTextWriter (Clase)</a></li>
<li><a class="ext" title="MSDN Library: Crear y utilizar DataSets" href="http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpguide/html/cpconcreatingusingdatasets.asp">MSDN Library: Crear y utilizar DataSets</a></li>
<li><a class="ext" title="MSDN Library: Agregar DataTable a DataSet" href="http://msdn.microsoft.com/library/spa/default.asp?url=/library/SPA/cpguide/html/cpconaddingdatatabletodataset.asp">MSDN Library: Agregar DataTable a DataSet</a></li>
<li><a class="ext" title="CÓMO: Llenar un objeto DataSet desde una base de datos mediante Visual Basic .NET" href="http://support.microsoft.com/default.aspx?scid=kb;es;301216">CÓMO: Llenar un objeto DataSet desde una base de datos mediante Visual Basic .NET</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.raulserrano.net/2005/12/sindicacion-rss/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Desarrollador cinco estrellas 2005</title>
		<link>http://www.raulserrano.net/2005/10/desarrollador-cinco-estrellas-2005/</link>
		<comments>http://www.raulserrano.net/2005/10/desarrollador-cinco-estrellas-2005/#comments</comments>
		<pubDate>Sat, 08 Oct 2005 22:00:00 +0000</pubDate>
		<dc:creator>Raúl S.</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Formacion]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MSDN]]></category>

		<guid isPermaLink="false">http://localhost/blog/?p=21</guid>
		<description><![CDATA[MSDN de nuevo nos trae el programa de capacitación sobre Tecnología .NET con el que podrás introducirte en esta tecnología o bien, si ya eres [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Desarrollador 5 estrellas" href="http://www.mslatam.com/latam/msdn/comunidad/dce2005/"><img class="alignright" src="http://www.raulserrano.net/images/msdn_dce2005.jpg" alt="Desarrollador Cinco Estrellas 2005" width="236" height="59" /></a></p>
<p><a class="ext" title="Microsoft Development Network" href="http://www.microsoft.com/spain/msdn/">MSDN</a> de nuevo nos trae el programa de capacitación sobre <a class="ext" title="Iniciativas Tecnológicas de Microsoft .NET" href="http://www.microsoft.com/spain/technet/productos/net/iniciativas.mspx">Tecnología .NET</a> con el que podrás introducirte en esta tecnología o bien, si ya eres un usuario avanzado profundizar sobre la materia.</p>
<p>Como promoción a este programa, en caso de conseguir tu <em>segunda estrella</em> antes del 7 de Noviembre de 2005, te regalan la version Standard de <a class="ext" title="Información del producto" href="http://msdn.microsoft.com/howtobuy/vs2005/">Visual Studio 2005</a>.</p>
<p>Más Información<br />
<a class="ext" title="Desarrollador 5 estrellas" href="http://www.mslatam.com/latam/msdn/comunidad/dce2005/">Desarrollador 5 estrellas</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.raulserrano.net/2005/10/desarrollador-cinco-estrellas-2005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eventos en Murcia</title>
		<link>http://www.raulserrano.net/2005/09/eventos-en-murcia/</link>
		<comments>http://www.raulserrano.net/2005/09/eventos-en-murcia/#comments</comments>
		<pubDate>Thu, 08 Sep 2005 12:40:41 +0000</pubDate>
		<dc:creator>Raúl S.</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[MSDN]]></category>
		<category><![CDATA[Technet]]></category>
		<category><![CDATA[Tecnología]]></category>

		<guid isPermaLink="false">http://localhost/blog/?p=30</guid>
		<description><![CDATA[El próximo día 15 de Septiembre, Microsoft celebra en Murcia un par de eventos: Para sistemas: Mantenga su Infraestructura Segura&#8230;Contra Hackers Organizado por Technet como [...]]]></description>
			<content:encoded><![CDATA[<p>El próximo día 15 de Septiembre, <em>Microsoft </em>celebra en Murcia un par de eventos:</p>
<ul>
<li>Para <em>sistemas</em>:</li>
<p><span class="ext"><strong>Mantenga su Infraestructura Segura&#8230;Contra Hackers</strong></span></p>
<p>Organizado por <a class="ext" title="Microsoft TechNet - Página de Inicio" href="http://www.microsoft.es/technet">Technet</a> como parte de la Gira de Seguridad y contando con la presencia del MVP Chema Alonso.</p>
<li>Para <em>desarrolladores</em>:</li>
<p><span class="ext"><strong>Desarrollo de aplicaciones Web y Windows con Visual Basic 2005</strong></span></p>
<p>Organizado por <a class="ext" title="Página principal de MSDN Online en Español" href="http://www.microsoft.es/msdn">MSDN</a> Taller y con la presencia entre otros del también MVP <a class="ext" title="PortalSQL.COM Tu sitio sobre Sql-Server" href="http://www.portalsql.com">Miguel Egea</a></ul>
<p>Ambos eventos necesita inscripción previa, a la que podéis acceder desde los enlaces que os he dejado.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.raulserrano.net/2005/09/eventos-en-murcia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

