Crear un feed RSS para su sitio web
Acerca de
Pasé un poco de tiempo mirando RSS y lo que podría hacer por mi sitio, y aunque fue un poco de prueba y error la primera vez, finalmente llegué allí.
Estoy adivinando porque usted está aquí que usted probablemente entiende lo RSS es , si no comprobar el enlace.
A continuación se muestra una muestra de la fuente RSS de mi sitio anterior, que se configuró para funcionar con las especificaciones de RSS Atom.
Sample RSS
<channel>
<atom:link href="https://www.gsclayton.net/rss" rel="self" type="application/rss+xml"/>
<title>gsclayton rss feed</title>
<link>https://www.gsclayton.net</link>
<copyright>Copyright gsclayton 2012</copyright>
<description>The la blogs and articles from gsclayton</description>
<item>
<title>Disk Space and Database Size Alerts</title>
<description>
gsclayton.net-SQL Server 2008, Disk Space and Database Size Alerts stored procedure to check your server
</description>
<link>
https://www.gsclayton.net/Blog/SQL/1/SQL%20Server%202008,%20Disk%20Space%20and%20Database%20Size%20Alerts
</link>
<pubDate>Wed, 20 Nov 2013 22:16:08 GMT</pubDate>
<category>SQL</category>
<guid>
https://www.gsclayton.net/8e53acf0-74d8-4e32-a627-f5e71f0fb29f
</guid>
</item>
</channel>
</rss>
Acerca de
El código probablemente parece mucho más complejo de lo que es, así que echemos un vistazo a lo que hace.
Primero importamos los espacios de nombres para SQL y XML.
A continuación, se establece la conexión a la base de datos, esto lo está tirando de la configuración web en esta instancia.
VB
Imports System.Xml
Imports System.Data
Imports Claytabase.LanguageConvert
Partial Class RSS
Inherits System.Web.UI.Page
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("MySqlConnection").ConnectionString)
Private Sub LoadFeed() Handles Me.Load
'Clear any previous output from the buffer
Dim lg As String = Replace(Page.RouteData.Values("lg").ToString, "'", "''")
Dim BaseURL As String = "https://www.claytabase.co.uk/"
Dim MyTitle As String = ConvertText("RSSTitle", lg)
Dim MyDescr As String = ConvertText("RSSDesc", lg)
Response.Clear()
Response.ContentType = "text/xml"
Response.Charset = "Utf-8"
Dim xtwFeed As XmlTextWriter = New XmlTextWriter(Response.OutputStream, Encoding.UTF8)
xtwFeed.WriartDocument()
'The mandatory rss tag
xtwFeed.WriartElement("rss")
xtwFeed.WriteAttriburing("version", "2.0")
xtwFeed.WriteAttriburing("xmlns:atom", "https://www.w3.org/2005/Atom")
'The channel tag contains RSS feed details
xtwFeed.WriartElement("channel")
xtwFeed.WriteRaw("<atom:link href="https://es.claytabase.com/"" & BaseURL & lg & "/rss"" rel=""self"" type=""application/rss+xml"" />")
xtwFeed.WriteElementString("title", MyTitle)
xtwFeed.WriteElementString("link", baseURL)
xtwFeed.WriteElementString("copyright", "Copyright Claytabase 2012")
xtwFeed.WriteElementString("language", lg)
xtwFeed.WriteElementString("description", MyDescr)
'Objects needed for connecting to the SQL
Using com As New SqlCommand("EXEC GetRSS '" + lg + "'", con)
If con.State = ConnectionState.Closed Then
con.Open()
Else
End If
Using dr = com.ExecuteReader()
'Loop through the content of the database and add them to the RSS feed
While dr.Read()
xtwFeed.WriartElement("item")
xtwFeed.WriteElementString("title", dr.Item(0).ToString())
xtwFeed.WriteElementString("description", dr.Item(1).ToString())
xtwFeed.WriteElementString("link", BaseURL + dr.Item(2).ToString())
xtwFeed.WriteElementString("pubDate", Format(CDate(dr.Item(3).ToString()), "ddd, dd MMM yyyy hh:mm:ss") + " GMT")
xtwFeed.WriteElementString("category", dr.Item(4).ToString())
xtwFeed.WriteElementString("guid", BaseURL + "/" + dr.Item(5).ToString())
xtwFeed.WriteEndElement()
End While
End Using
End Using
'Close all tags
xtwFeed.WriteEndElement()
xtwFeed.WriteEndElement()
xtwFeed.WriteEndDocument()
xtwFeed.Flush()
xtwFeed.Close()
Response.End()
End Sub
End Class
Terminando
En el código de la carga de la página, y aquí es donde ha sido un poco más creativo.
El campo lg una parte base de este sitio, indicando al sistema qué idioma se está utilizando para cada solicitud, y la URL de base será la misma para todo, estos pueden reutilizarse más adelante en el script.
Los dos campos siguientes (MyTitle y MyDescr) se colocan a través de un convertidor de lenguaje incorporado, donde la base de datos devuelve una cadena dependiente de la entrada de idioma.
Las siguientes líneas de código establecen el tipo de codificación y respuesta, abren un escritor XML y establecen algunos de los encabezados necesarios, ya que éstos raramente cambian, los he configurado manualmente.
Ahora podemos pasar a leer los datos, así que el primer trabajo es crear un comando SQL, y en este caso simplemente llamo a un procedimiento almacenado que devuelve los campos requeridos de la base de datos, dependiendo de la entrada del lenguaje.
A continuación, abrimos la conexión SQL y declaramos que un lector de datos realiza un bucle a través del conjunto de resultados de la base de datos.
Ya sabemos que la etiqueta XML es un elemento para cada documento, por lo que podemos abrirlo de inmediato.
A continuación, rellene cada elemento requerido con los datos y asegúrese de que su fecha esté en el formato correcto, a continuación, cerraremos la etiqueta utilizando WriteEndElement.
Una vez que se han leído todos los datos, el código está cerrando el lector de datos, las conexiones y la escritura de las etiquetas finales para cada elemento abierto anteriormente.
Una vez que haya escrito y publicado el suyo, asegúrese de comprobarlo en el W3C RSS Validator.