Utwórz kanał RSS dla swojej witryny
O
Spędziłem sporo czasu na RSS i co mogłoby zrobić dla mojej witryny, a podczas próby bitwy i błędu po raz pierwszy w końcu tam dotarłem.
Zgaduję, ponieważ jesteś tutaj, że prawdopodobnie zrozumiesz, co to RSS , jeśli nie sprawdź link.
Poniżej znajduje się próbka ze starego kanału RSS dla mojej starej witryny, która została skonfigurowana do obsługi specyfikacji 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
Kod prawdopodobnie wygląda o wiele bardziej złożony niż jest, więc spójrz na to, co robi.
Najpierw importujemy przestrzenie nazw dla SQL i XML.
Połączenie z bazą danych jest ustawione, to jest ciągnięcie z sieci web config w tym przypadku.
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://pl.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
Pakować
Na kod z ładowania strony, a tutaj jest nieco bardziej twórczy.
Pole lg stanowi podstawę tej strony, informując system, który język jest używany dla każdego żądania, a podstawowy adres URL będzie taki sam dla wszystkich, które mogą być ponownie wykorzystane w dalszej części skryptu.
Następne dwa pola (MyTitle i MyDescr) są przenoszone przez wbudowany konwerter języków, gdzie baza danych zwraca ciąg znaków zależny od języka.
W następnych kilku wierszach kodu określono typ kodowania i odpowiedzi, otwórz program do zapisywania w formacie XML i podaj niektóre z wymaganych nagłówków, ponieważ rzadko się zmieniają, ustawiłem ręcznie.
Teraz możemy przejść do czytania danych, więc pierwszą zadaniem jest utworzenie polecenia SQL iw tym przypadku po prostu wywołać procedurę składowaną, która zwraca wymagane pola z bazy danych, zależnie od języka.
Następnie otwieramy połączenie SQL i zadeklarujemy czytelnik danych, aby utworzyć zestaw wyników z bazy danych.
Wiemy już, że znacznik XML jest pozycją dla każdego dokumentu, więc możemy ją otworzyć od razu.
Następnie wypełnij wszystkie wymagane elementy danymi i upewnij się, że data jest w prawidłowym formacie, a następnie zamknij znacznik, używając WriteEndElement.
Po odczytaniu danych kod jest zamykany czytnik danych, połączenia i pisanie znaczników końcowych dla każdego elementu wcześniej otwieranego.
Po napisaniu i opublikowaniu twojego, sprawdź go na W3C RSS Validator.