Crie um feed RSS para o seu site
Sobre
Passei um pouco de tempo a olhar para RSS e o que poderia fazer para o meu site e, embora fosse um pouco de tentativa e erro na primeira vez, acabei por chegar lá.
Estou adivinhando porque você está aqui que você provavelmente entende o que é RSS , se não verificar o link.
Abaixo está uma amostra do feed RSS do site antigo, que foi configurado para executar as especificações 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>
Sobre
O código provavelmente parece muito mais complexo do que é, então vamos dar uma olhada no que faz.
Primeiro importamos os namespaces para SQL e XML.
Em seguida, a conexão com o banco de dados está configurada, isto está puxando-o da configuração da web nesta instância.
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://pt.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
Empacotando
No código da carga da página, e aqui é onde foi um pouco mais criativo.
O campo é uma parte básica deste site, informando ao sistema qual idioma está sendo usado para cada solicitação e o URL base será o mesmo para tudo, estes podem ser reutilizados mais tarde no script.
Os dois campos seguintes (MyTitle e MyDescr) são colocados através de um conversor de idioma incorporado, onde o banco de dados retorna uma string dependente da entrada do idioma.
As próximas linhas de código estabelecem o tipo de codificação e resposta, abre um escritor XML e estabelece alguns dos títulos necessários, pois estes raramente mudam, eu configurei estes manualmente.
Agora podemos avançar para ler os dados, então o primeiro trabalho é criar um comando SQL, e neste caso eu simplesmente chamo um procedimento armazenado que retorna os campos obrigatórios do banco de dados, dependendo da entrada do idioma.
Em seguida, abrimos a conexão SQL e declaramos um leitor de dados para percorrer o conjunto de resultados do banco de dados.
Nós já sabemos que a tag XML é item para cada documento, para que possamos abrir isso imediatamente.
Em seguida, preencha cada item necessário com os dados e assegure-se de que sua data esteja no formato correto, então fecharemos a etiqueta usando o WriteEndElement.
Uma vez que todos os dados foram lidos, o código está fechando o leitor de dados, as conexões e a escrita das tags de fim para cada elemento aberto anteriormente.
Depois de escrever e publicar o seu, certifique-se de verificar o W3C RSS Validator.