Créer un flux RSS pour votre site web
Sur
J'ai passé un peu de temps à regarder le flux RSS et ce qu'il pouvait faire pour mon site, et alors qu'il s'agissait d'un essai et d'une erreur, la première fois, je l'ai finalement achevé.
Je devine parce que vous êtes ici que vous comprenez probablement ce qu'est le RSS , sinon vérifiez le lien.
Voici un exemple du flux RSS de mon ancien site, qui a été configuré pour fonctionner selon les spécifications 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>
Sur
Le code est probablement beaucoup plus complexe qu'il ne l'est, alors regardons ce qu'il fait.
Tout d'abord, nous importons les espaces de noms pour SQL et XML.
Ensuite, la connexion à la base de données est définie, ceci est tiré de la configuration Web dans cette instance.
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://fr.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
Emballer
Sur le code du chargement de la page, voici où il a été un peu plus créatif.
Le champ est une partie de base de ce site, indiquant au système quelle langue est utilisée pour chaque requête, et l'URL de base sera la même pour tout, ces dernières peuvent être réutilisées plus tard dans le script.
Les deux champs suivants (MyTitle et MyDescr) sont mis en place dans un convertisseur de langage intégré, où la base de données renvoie une chaîne dépendant de l'entrée de la langue.
Les quelques lignes de code suivantes définissent le type de codage et de réponse, ouvrent un rédacteur XML et définissent certaines des rubriques requises, car celles-ci changent rarement, j'ai défini ces paramètres manuellement.
Nous pouvons maintenant passer à la lecture des données, donc le premier travail consiste à créer une commande SQL, et dans ce cas, j'appelle simplement une procédure stockée qui renvoie les champs requis de la base de données, en fonction de l'entrée de la langue.
Nous ouvrons ensuite la connexion SQL et déclarons qu'un lecteur de données effectue une boucle dans le jeu de résultats de la base de données.
Nous savons déjà que la balise XML est un élément pour chaque document, afin que nous puissions l'ouvrir tout de suite.
Ensuite, remplissez chaque élément requis avec les données et assurez-vous que votre date est dans le format correct, nous fermerons ensuite la balise en utilisant WriteEndElement.
Une fois que les données ont toutes été lues, le code ferme le lecteur de données, les connexions et l'écriture des balises d'extrémité pour chaque élément ouvert plus tôt.
Une fois que vous avez écrit et publié le vôtre, assurez-vous de le vérifier sur le W3C RSS Validator.