Vytvořte RSS kanál pro vaše webové stránky
O
Strávil jsem spoustu času, když jsem se díval na RSS a co mohl udělat pro mé stránky, a přestože to bylo poprvé trochu pokus a omyl, nakonec jsem se tam dostal.
Hádám, protože jste zde, že pravděpodobně rozumíte tomu, co je RSS , pokud nekontrolujete odkaz.
Níže je ukázka z RSS kanálu svého starého webu, který byl nastaven tak, aby spouštěl specifikace 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>
O
Kód pravděpodobně vypadá mnohem složitější, než je, takže se můžete podívat na to, co dělá.
Nejprve importujeme obory názvů pro SQL a XML.
Poté je nastaveno připojení k databázi, v tomto případě je tažení z webového configu.
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://cs.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
Obalte se
Na kód z načtení stránky, a tady je to, kde to bylo trochu více kreativní.
Pole lg je základní část této stránky, která říká, který jazyk je pro každou žádost používán, a základní adresa URL bude stejná pro všechno, které lze později znovu použít ve skriptu.
Následující dvě pole (MyTitle a MyDescr) jsou vloženy pomocí zabudovaného konvertoru jazyků, kde databáze vrací řetězec v závislosti na jazykovém vstupu.
Další řady řádků kódu stanovilo typ kódování a odezvy, otevřel spouštěč XML a vypsal některé požadované položky, protože tyto změny se zřídka mění, je jsem nastavil ručně.
Můžeme nyní přejít na čtení dat, takže první úlohou je vytvořit příkaz SQL a v tomto případě jednoduše zavolám uloženou proceduru, která vrátí požadovaná pole z databáze v závislosti na jazykovém vstupu.
Poté otevřete připojení SQL a deklarujeme čtečku dat pro smyčku přes sadu výsledků z databáze.
Již víme, že značka XML je pro každý dokument položkou, takže ji můžeme okamžitě otevřít.
Poté zadejte každou požadovanou položku s daty a ujistěte se, že datum je ve správném formátu, pak zavřete značku pomocí funkce WriteEndElement.
Jakmile byly všechna data přečtena, kód zavírá čtečku dat, připojení a zapisuje koncové značky pro každý dříve otevřený prvek.
Jakmile jste napsali a publikovali své údaje, nezapomeňte je zkontrolovat na Validátoru RSS W3C.