Hur man bygger ett RSS-flöde med ASP.NET

Under den här handledningen granskar vi hur man skapar ett RSS-flöde med ASP.NET-ramen. Att ha ett RSS-flöde för din webbplats har blivit en nödvändighet de senaste åren. Med bloggar eller nyhetssidor uppdateras ofta och med det stora antalet bloggar och nyhetswebbplatser där ute har RSS tillåtit läsarna att fortsätta med nytt innehåll utan att vara tvungen att besöka dem. När du har slutfört denna handledning vet du hur du skapar ett RSS-flöde med ASP.NET och hur du gör XML-dokument på ASP.NET webbsidor.


Steg 0: RSS 2.0 Introduktion

RSS är ett webbinnehållssyndikeringsformat. Det står för "Really Simple Syndication" och är skrivet i XML. Alla RSS-filer måste överensstämma med XML 1.0-specifikationen, som publiceras av World Wide Web Consortium (W3C). Med RSS är det möjligt att distribuera aktuellt webbinnehåll från en webbplats till tusentals andra runt om i världen. För att förenkla termen tillåter RSS snabb bläddring av nyheter och uppdateringar.

Syntaksreglerna för RSS 2.0 är ganska enkla, men stränga. Här är ett enkelt RSS-dokument:

    Ditt hemsida namn http://www.yourdomain.com Gratis RSS-handledning  Första artikeln http://www.yourdomain.com/article.aspx?ID=1 Beskrivningen av den första artikeln.   Andra artikeln http://www.yourdomain.com/article.aspx?ID=2 Beskrivningen av den andra artikeln.   

Den första raden i dokumentet - XML-deklarationen - definierar XML-versionen och teckenkodningen som används i dokumentet. I det här fallet överensstämmer dokumentet med 1.0-specifikationen för XML och använder utf-8 teckenuppsättning. Nästa rad är RSS-deklarationen, som identifierar att detta i själva verket är ett RSS-dokument (mer specifikt RSS-version 2.0).

Nästa rad innehåller element. Detta element används för att beskriva RSS-flödet. De elementet har tre nödvändiga barnelement:

  • </code> - Definierar titeln på kanalen (t.ex. ditt namn på webbplatsen)</li> <li> <code><link></code> - Definierar hyperlänken till kanalen (t.ex. http://www.yourdomain.com)</li> <li> <code><description></code> - Beskriver kanalen (t.ex. Gratis RSS-handledning)</li> </ul> <p> Varje <code><channel></code> Elementet kan ha en eller flera <code><item></code> element. Varje <code><item></code> element definierar en artikel eller "story" i RSS-flödet.</p> <p> De <code><item></code> elementet kräver tre barns element:</p> <ul> <li> <code><title></code> - Definierar objektets titel (t ex första artikeln)</li> <li> <code><link></code> - Definierar hyperlänken till objektet (t.ex. http://www.yourdomain.com/article.aspx?ID=1)</li> <li> <code><description></code> - Beskriver objektet (t ex beskrivningen av den första artikeln)</li> </ul> <p>När du tittar på Firefox ska RSS-dokumentet ovan likna följande: </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet.jpg"> <hr> <h2> Steg 1: Komma igång</h2> <p>För att följa denna handledning kan du föreställa dig att du arbetar som webbutvecklare och bygger en nyhetswebbplats där alla nyhetsberättelser lagras i Microsofts SQL Server-databas. Specifikt lagras artiklarna i ett bord som heter <code>Nyheter</code>, som innehåller följande fält:</p> <ul> <li> <strong>articleID</strong> - ett autofokuseringsfält i heltal som identifierar varje artikel</li> <li> <strong>Titel</strong> - en <code>nvarchar (256)</code>, specificera titeln på artikeln</li> <li> <strong>Författare</strong> - en<code>varchar (50)</code>, specificerar författaren till artikeln</li> <li> <strong>Beskrivning</strong> - en<code>varchar (500)</code>, ger en mer djupgående beskrivning av artikeln</li> <li> <strong>datePublished</strong> - en <code>datum Tid</code>, vilket anger det datum som artikeln publicerades</li> </ul> <p> Observera att det kan finnas andra fält i <code>Nyheter</code> bordet, men de som listas ovan är de enda vi är intresserade av att använda - åtminstone i syfte att göra ett RSS-flöde.</p> <p>Vi använder Visual Studio för att slutföra exemplet. Om du inte har den fullständiga versionen av VS kan du ta tag i den kostnadsfria Express Edition.</p> <hr> <h2> Steg 2: Skapa en rss.aspx-sida</h2> <p>Vårt nästa steg är att skapa en ASP.NET webbsida (<code>rss.aspx</code>) som visar en lista över de senaste nyheterna som ett korrekt formaterat RSS 2.0-dokument. I <code>Lösningsutforskare</code>, högerklicka på projektnamnet och klicka sedan på <code>Lägg till nytt föremål</code>. I thia dialogrutan, under Visual Studio installerade mallar, klicka <code>Webbformulär</code>. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_2.jpg"> <p> I <code>namn</code> rutan, skriv ett namn på den nya webbsidan (<code>rss.aspx</code>) och klicka sedan på <code>Lägg till</code>. Den nya ASP.NET webbsidan (<code>rss.aspx</code>) skapas och visas i enlighet med detta.</p> <p>Eftersom vi vill ha <code>rss.aspx</code> sida för att producera XML-utmatning, är det första som vi måste göra att ta bort alla HTML-markup- eller webbkontroller från sidan och ställ sedan in <code>Innehållstyp</code> egendom av <code>@sida</code> direktiv till "<code>text / xml</code>".</p> <p>Efter att ha rensat all HTML-markup från <code>rss.aspx</code> sida, lägg till en <code>Repeater</code> kontrollera till sidan. Vi använder Repeater-kontroll för att göra RSS-dokument på rss.aspx-sidan.</p> <p>Här är källans vy av <code>rss.aspx</code> sida, efter att vi gjort några ändringar:</p> <pre> <%@ Page Language="C#" ContentType="text/xml" AutoEventWireup="true" CodeBehind="rss.aspx.cs" Inherits="NettutsTutorial2.rss" %> <asp:Repeater runat="server"> </asp:Repeater></pre> <hr> <h2> Steg 3: Konfigurera anslutningssträngen</h2> <p>Därefter vill vi konfigurera anslutningssträngen i datakällan, inom <code>web.config</code> fil. Genom att spara informationen om anslutningssträngen kommer vi att undvika att behöva hårdkoda den i kodens bakomliggande fil. Detta förenklar saker, om informationen om anslutningssträngen ändras i framtiden. Placera den i <code><connectionStrings></code> avsnitt under <em>konfigurationselement</em>, såhär:</p> <pre> <connectionStrings> <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Nettuts.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings></pre> <p>Vi kommer att få tillgång till den här informationen från koden bakom filen senare när vi vill hämta data från databasen.</p> <hr> <h2> Steg 4: Ta bort otillåtna tecken från XML-dokumentet</h2> <p> Vissa tecken har särskild betydelse i <code>XML</code>. Om du placerar ett tecken, t.ex. "<", inside an XML element, it will generate an error, because the parser interprets it as the start of a new element. To avoid this error, replace the "<" character with its <code>Enhetsreferens</code> (<).</p> <p> Det finns fem fördefinierade företagsreferenser i XML:</p> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td> <</td> <td> <</td> <td> mindre än</td> </tr> <tr> <td> ></td> <td> ></td> <td> större än</td> </tr> <tr> <td> &</td> <td> &</td> <td> et-tecken </td> </tr> <tr> <td> '</td> <td> '</td> <td> apostrof</td> </tr> <tr> <td> "</td> <td> "</td> <td> citattecken</td> </tr> </table> <p> För att undvika att vårt RSS-flöde producerar ett fel måste vi ändra alla olagliga tecken i ett RSS-dokument med deras företagsreferenser. Lägg till följande kod i kodens bakomliggande fil <code>rss.aspx</code> sida (<code>rss.aspx.cs</code>):</p> <pre name="code"> skyddad sträng RemoveIllegalCharacters (objektinmatning) // kasta inmatningen till en strängsträngdata = input.ToString (); // ersätta olagliga tecken i XML-dokument med deras entitetsreferenser data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); returnera data; </pre> <p>De <code>RemoveIllegalCharacters ()</code> funktionen utför några enkla strängbyte, om det behövs. Vi kommer att ringa den här funktionen från <code>rss.aspx</code> sidan inom kort.</p> <hr> <h2> Steg 5: Hämta data från databasen</h2> <p> Lägg till följande kod i <code>Page_Load</code> händelsehanterare:</p> <pre name="code"> skyddad tomgång Page_Load (objekt avsändare, EventArgs e) // Hämta anslutningssträngen från web.config-filsträngen connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString; // Skapa SqlConnection-objekt SqlConnection sqlConn = nytt SqlConnection (); sqlConn.ConnectionString = connString; // SQL-fråga för att hämta data från databassträngen sqlQuery = "VÄLJ TOPP 10 ArtikelID, Titel, Författare, Beskrivning, DatePublished FROM News ORDER BY DatePublished DESC"; // Skapa SqlCommand objekt SqlCommand cmd = nytt SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // öppen anslutning och sedan binda data till RepeaterRSS-kontroll sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close (); </pre> <p> Koden ovan kommer att försöka hämta de tio senaste nyheterna från din databas. Det binder dem sedan till en <code>Repeater</code> kontroll (<code>RepeaterRSS</code>) när sidan är laddad.</p> <hr> <h2> Steg 6: Rendering Data </h2> <p>Detta är vårt sista steg. Det är dags att göra saker från <code>Nyheter</code> tabellen till en lämplig RSS 2.0-syndikeringsfil. Det enklaste och snabbaste sättet att visa databasdata som XML är att använda a <code>Repeater</code> kontroll (<code>RepeaterRSS</code>). Specifikt <code>Repeater</code> kommer att visa <code><rss></code>, <code><channel></code>, och webbplatsrelaterade elementetiketter i dess <code>HeaderTemplate</code> och <code>FooterTemplate</code> mallar och <code><item></code> element i <code>ItemTemplate</code> mall. Glöm inte att ringa hjälpen <code>RemoveIllegalCharacters ()</code> funktionen för att ersätta oönskade tecken från strängutmatningen.</p> <p>Följande är HTML-delen på vår ASP.NET-webbsida (<code>rss.aspx</code>):</p> <pre> <%@ Page Language="C#" ContentType="text/xml" AutoEventWireup="true" CodeBehind="rss.aspx.cs" Inherits="NettutsTutorial2.rss" %> <asp:Repeater runat="server"> <HeaderTemplate> <rss version="2.0"> <channel> <title>Namnet på webbplatsen http://www.yourdomain.com Kort beskrivning av webbplatsen. <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %> http://www.yourdomain.com/news.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ArticleID") %> <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Author"))%> <%# String.Format("0:R", DataBinder.Eval(Container.DataItem, "DatePublished"))%> <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Description"))%>

    Det första värt att notera här är att rss.aspx filen ovan innehåller endast Repeater kontroll (RepeaterRSS) och inga andra HTML-markup- eller webbkontroller. Detta beror på att vi vill att sidan ska avge inget annat än XML-utdata. Vi ställer in Innehållstyp av @Sida direktiv till "Text / xml" för att indikera att produktionen av rss.aspx sidan är ett XML-dokument.

    I HeaderTemplate mall av Repeater kontroll, vi placerar och element.

    Därefter i ItemTemplate, vi placerar element som innehåller </code>, <code><link></code>, <code><author></code>, <code><pubDate></code>, och <code><description></code> element, som plats för databasfält. Vi kallar <code>RemoveIllegalCharacters ()</code> funktion när du lägger till <code>Titel</code>, <code>Författare</code>, och <code>Beskrivning</code> databasfält till <code>XML</code> produktion. Kom ihåg, den här funktionen ersätter helt enkelt olagliga XML-tecken med deras referenser för enhetsuppgifter.</p> <p>Slutligen, den <code>datePublished</code> databasfält, som ingick i <code><pubDate></code> element, formateras med hjälp av <code>String.Format</code> metod. Standardformatet specificerar, <code>R</code>, formatera <code>datePublished</code> Värdet är lämpligt enligt RFC 822, datum och tidsspecifikation. Detta börjar med en valfri förkortning med tre bokstäver och komma, följt av en obligatorisk dag, den förkortade tre bokstaven och därefter året följt av en tid med tidszonnamnet, t.ex. <code>Tis 04 nov 2010 20:50:26 GMT</code>.</p> <hr> <h2>Resultatet </h2> <p>Och där har vi det! Med minimal ansträngning har vi skapat ett anpassat RSS-flöde för en ASP.NET-applikation. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_3.jpg"> <hr> <h2>Den fullständiga koden</h2> <h3>Rss.aspx-filen</h3> <pre> <%@ Page Language="C#" ContentType="text/xml" AutoEventWireup="true" CodeBehind="rss.aspx.cs" Inherits="NettutsTutorial2.rss" %> <asp:Repeater runat="server"> <HeaderTemplate> <rss version="2.0"> <channel> <title>Namnet på webbplatsen http://www.yourdomain.com Kort beskrivning av webbplatsen. <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %> http://www.yourdomain.com/news.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "ArticleID") %> <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Author"))%> <%# String.Format("0:R", DataBinder.Eval(Container.DataItem, "DatePublished"))%> <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Description"))%>

    Filen rss.aspx.cs

     använder system; Använda System.Collections; använder System.Configuration; använder System.Data; använder system.Linq; använder System.Web; använder System.Web.Security; använder System.Web.UI; använder System.Web.UI.HtmlControls; använder System.Web.UI.WebControls; använder System.Web.UI.WebControls.WebParts; använder System.Xml.Linq; använder System.Data.SqlClient; namespace NettutsTutorial2 public partial class rss: System.Web.UI.Page protected void Page_Load (objekt avsändare, EventArgs e) // Hämta anslutningssträng från web.config filsträng connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString ; // Skapa SqlConnection-objekt SqlConnection sqlConn = nytt SqlConnection (); sqlConn.ConnectionString = connString; // SQL-fråga för att hämta data från databassträngen sqlQuery = "VÄLJ TOPP 10 ArtikelID, Titel, Författare, Beskrivning, DatePublished FROM News ORDER BY DatePublished DESC"; // Skapa SqlCommand objekt SqlCommand cmd = nytt SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // öppen anslutning och sedan binda data till RepeaterRSS-kontroll sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close ();  skyddad sträng RemoveIllegalCharacters (objektinmatning) // kasta inmatningen till en strängsträngdata = input.ToString (); // ersätta olagliga tecken i XML-dokument med deras entitetsreferenser data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); returnera data; 

    Web.config-filen

          

    Slutsats

    Att skapa ett RSS-flöde med ASP.NET är ganska enkelt, eller hur? Vi behöver bara förstå RSS 2.0-specifikationen. Utöver det, genom att använda .NET Repeater kontroll, vi kan göra objekt från en databas till RSS-dokumentet. De flesta innehållshanteringssystemen kommer som standard att ha denna funktion. Men om du är en utvecklare och bygger en ASP.NET-webbplats från början, har du nu färdigheter att bygga ett eget anpassat flöde.

    Glad kodning!