Формируем RSS канал на ASP.NET

     Однажды потребовалось на одном из сайтов сформировать 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>&lt;p&gt;&lt;img src=""http://site.ru/files/" & DSPageData.Tables("Table").Rows(i).Item("foto").ToString & """/&gt;&lt;/p&gt; " & _

                  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>

Комментарии закрыты