Создайте RSS-канал для своего сайта
Около
Я потратил немало времени на просмотр RSS и то, что он мог сделать для моего сайта, и, хотя в первый раз это было немного пробным и ошибочным, я в конце концов попал туда.
Я угадываю, потому что вы здесь, что вы, вероятно, понимаете, что такое RSS , если не проверить ссылку.
Ниже приведен пример из RSS-канала моего старого сайта, который был настроен для работы с спецификациями 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>
Около
Код, вероятно, выглядит намного сложнее, чем есть, поэтому давайте посмотрим, что он делает.
Сначала мы импортируем пространства имен для SQL и XML.
Затем устанавливается соединение с базой данных, это вытаскивает его из веб-конфигурации в этом экземпляре.
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://ru.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
Завершение
На код из загрузки страницы, и вот где он был немного более креативным.
Поле lg - базовая часть этого сайта, сообщающая системе, язык которой используется для каждого запроса, и базовый URL-адрес будет одинаковым для всего, они могут быть повторно использованы позже в скрипте.
Следующие два поля (MyTitle и MyDescr) передаются через встроенный языковой конвертер, где база данных возвращает строку, зависящую от ввода языка.
Следующие несколько строк кода задают тип кодирования и ответа, открывают XML-запись и задают некоторые из требуемых заголовков, так как они редко меняются, я установил их вручную.
Теперь мы можем перейти к чтению данных, поэтому первое задание - создать команду SQL, и в этом случае я просто вызываю хранимую процедуру, которая возвращает необходимые поля из базы данных, в зависимости от ввода языка.
Затем мы открываем SQL-соединение и объявляем, что считыватель данных циклически перебирает результирующий набор из базы данных.
Мы уже знаем, что XML-тег является элементом для каждого документа, поэтому мы можем сразу открыть его.
Затем заполняйте каждый необходимый элемент данными и убедитесь, что ваша дата в правильном формате. Затем мы закроем тег с помощью элемента WriteEndElement.
После того, как все данные были прочитаны, код закрывает считыватель данных, соединения и записывает концевые теги для каждого элемента, открытого ранее.
После того, как вы написали и опубликовали свою версию, обязательно проверьте ее в W3C RSS Validator.