Формируем RSS канал на ASP.NET
2012-03-21 16:47:00 (читать в оригинале)
Однажды потребовалось на одном из сайтов сформировать RSS-канал, причем это дело было в командировке, где небыло возможности подключится к SQL серверу хостинга. Если бы была такая возможность, то это можно было бы сделать с помощью самого SQL сервера у которого есть неплохие фозможности форирования XML файлов. Но поскольку такой возможности небыло, то вот и родился такой небольшой aspx файл написаный на VB.NET в виде ASP.NET приложения. При обращении к сайту файл обращается к базе данных MS SQL где размещаются новости сайта и на основе этих данных на лету формирут необходимый XML файл в формате RSS-ленты.
<%@ Page Language="VB" AutoEventWireup="false" Debug="False" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Web.UI.Page" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim RSS As New StringBuilder
Dim DBConn as SqlConnection
Dim DBCommand As SqlDataAdapter
Dim DSPageData as New DataSet
DBConn = New SqlConnection(ConfigurationSettings.AppSettings("CnnSQL"))
DBCommand = New SqlDataAdapter _
("Select TOP 10 id, data, text, foto From table ORDER BY data DESC", DBConn)
DBCommand.Fill(DSPageData, "Table")
RSS.AppendLine("<?xml version=""1.0"" encoding=""windows-1251"" ?>")
RSS.AppendLine("<rss version=""2.0"" xmlns:atom=""http://www.w3.org/2005/Atom"" >")
RSS.AppendLine("<channel>")
RSS.AppendLine("<title>Новости сайта </title>")
RSS.AppendLine("<link></link>")
RSS.AppendLine("<description>Новости сайта</description>")
If DSPageData.Tables("Table").Rows.Count > 0 Then
For i As Integer = 0 To DSPageData.Tables("Table").Rows.Count - 1
RSS.AppendLine("<item>")
RSS.AppendLine("<title>" & _
DSPageData.Tables("Table").Rows(i).Item("id").ToString & "</title>")
RSS.AppendLine("<link>http://site.ru/default.aspx?id=" & _
DSPageData.Tables("Table").Rows(i).Item("id").ToString & "</link>")
RSS.AppendLine("<description><p><img src=""http://site.ru/files/" & DSPageData.Tables("Table").Rows(i).Item("foto").ToString & """/></p> " & _
DSPageData.Tables("Table").Rows(i).Item("text").ToString & _
"</description>")
RSS.AppendLine("<pubDate>" & _
Format(CDate(DSPageData.Tables("Table").Rows(i).Item("data").ToString), "r") & "</pubDate>")
RSS.AppendLine("</item>")
Next
End If
RSS.AppendLine("</channel>")
RSS.AppendLine("</rss>")
Response.Write(RSS.ToString)
End Sub
</script>