Hvordan bygge et RSS-feed med ASP.NET

I løpet av denne opplæringen vurderer vi hvordan du lager et RSS-feed med ASP.NET-rammen. Å ha en RSS-feed for nettstedet ditt har blitt en nødvendighet de siste årene. Med blogger eller nyhetssider oppdatert ofte, og med den store mengden blogger og nyhetswebsteder der ute, har RSS gitt leserne mulighet til å holde opp med nytt innhold uten å bli tvunget til å besøke dem. Når du har fullført denne opplæringen, vet du hvordan du lager et RSS-feed med ASP.NET, og hvordan du lager XML-dokumenter på ASP.NET-websider.


Trinn 0: RSS 2.0 Innledning

RSS er et webinnholdssyndikasjonsformat. Den står for "Really Simple Syndication," og er skrevet i XML. Alle RSS-filer må være i samsvar med XML 1.0-spesifikasjonen, som publisert av World Wide Web Consortium (W3C). Med RSS er det mulig å distribuere oppdatert webinnhold fra ett nettsted til tusenvis av andre rundt om i verden. For å forenkle begrepet, tillater RSS rask etterspørsel etter nyheter og oppdateringer.

Syntaksreglene for RSS 2.0 er ganske enkle, men strenge. Her er et enkelt RSS-dokument:

    Ditt nettstednavn http://www.yourdomain.com Gratis RSS-opplæring  Første artikkel http://www.yourdomain.com/article.aspx?ID=1 Beskrivelsen av den første artikkelen.   Andre artikkel http://www.yourdomain.com/article.aspx?ID=2 Beskrivelsen av den andre artikkelen.   

Den første linjen i dokumentet - XML-deklarasjonen - definerer XML-versjonen og tegnkodingen som brukes i dokumentet. I dette tilfellet samsvarer dokumentet med 1.0-spesifikasjonen for XML, og bruker utf-8 tegnsett. Neste linje er RSS-erklæringen, som identifiserer at dette faktisk er et RSS-dokument (mer spesifikt RSS-versjon 2.0).

Neste linje inneholder element. Dette elementet brukes til å beskrive RSS-feeden. De elementet har tre påkrevde barnelementer:

  • </code> - Definerer tittelen på kanalen (f.eks. Nettstedets navn)</li> <li> <code><link></code> - Definerer hyperkoblingen til kanalen (for eksempel http://www.yourdomain.com)</li> <li> <code><description></code> - Beskriver kanalen (for eksempel Free RSS Tutorial)</li> </ul> <p> Hver <code><channel></code> elementet kan ha en eller flere <code><item></code> elementer. Hver <code><item></code> element definerer en artikkel eller "historie" i RSS-feed.</p> <p> De <code><item></code> elementet krever tre barns elementer:</p> <ul> <li> <code><title></code> - Definerer tittelen på elementet (for eksempel første artikkel)</li> <li> <code><link></code> - Definerer hyperkoblingen til elementet (for eksempel http://www.yourdomain.com/article.aspx?ID=1)</li> <li> <code><description></code> - Beskriver elementet (for eksempel beskrivelsen av den første artikkelen)</li> </ul> <p>Når det vises i Firefox, bør RSS-dokumentet ovenfor se ut som: </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet.jpg"> <hr> <h2> Trinn 1: Komme i gang</h2> <p>For å følge denne veiledningen, tenk at du jobber som en webutvikler, og bygger en nyhetswebside der alle nyhetsshistoriene lagres i Microsofts SQL Server-database. Spesielt lagres artiklene i et bord som kalles <code>Nyheter</code>, som inneholder følgende felt:</p> <ul> <li> <strong>artic</strong> - et auto-trinns primærnøkkelfeltfelt som identifiserer hver artikkel unikt</li> <li> <strong>Tittel</strong> - en <code>nvarchar (256)</code>, angir artikkelenes tittel</li> <li> <strong>Forfatter</strong> - en n<code>varchar (50)</code>, angir forfatteren av artikkelen</li> <li> <strong>Beskrivelse</strong> - en n<code>varchar (500)</code>, gir en mer grundig beskrivelse av artikkelen</li> <li> <strong>DatePublished</strong> - en <code>dato tid</code>, som angir datoen artikkelen ble publisert</li> </ul> <p> Legg merke til at det kan være andre felt i <code>Nyheter</code> bord, men de som er nevnt ovenfor, er de eneste vi er interessert i å bruke - i hvert fall i form av en RSS-feed.</p> <p>Vi bruker Visual Studio til å fullføre eksemplet. Hvis du ikke har den fulle versjonen av VS, kan du hente den gratis Express Edition.</p> <hr> <h2> Trinn 2: Opprette en rss.aspx-side</h2> <p>Vårt neste skritt er å skape en ASP.NET webside (<code>rss.aspx</code>) som viser en liste over de siste nyhetene som et riktig formatert RSS 2.0-dokument. I <code>Solution Explorer</code>, Høyreklikk på prosjektnavnet, og klikk deretter <code>Legg til nytt element</code>. I dialogboksen Thia, under Visual Studio installerte maler, klikker du <code>Nettformular</code>. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_2.jpg"> <p> I <code>Navn</code> boks, skriv inn et navn for den nye websiden (<code>rss.aspx</code>), og klikk deretter <code>Legg til</code>. Den nye ASP.NET websiden (<code>rss.aspx</code>) er opprettet og vist, tilsvarende.</p> <p>Fordi vi vil <code>rss.aspx</code> siden for å produsere XML-utdata, er det første som må gjøres, å fjerne all HTML-markup eller webkontroller fra siden, og sett deretter inn <code>Innholdstype</code> tilhører <code>@side</code> direktiv til "<code>text / xml</code>".</p> <p>Etter å ha fjernet all HTML-merking fra <code>rss.aspx</code> side, legg til en <code>Repeater</code> kontroller inn på siden. Vi bruker Repeater-kontroll for å gjengi RSS-dokument på rss.aspx-siden.</p> <p>Her er kildevisningen til <code>rss.aspx</code> siden, etter at vi har gjort noen endringer:</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> Trinn 3: Oppsett Connection String</h2> <p>Deretter vil vi sette opp forbindelsesstrengen til datakilden, innenfor <code>web.config</code> fil. Ved å lagre tilkoblingsstrenginformasjonen, unngår vi å måtte kode det hardt i koden bak filen. Dette forenkler ting hvis forbindelsesstrenginformasjonen endres i fremtiden. Plasser den i <code><connectionStrings></code> delen under <em>konfigurasjonselement</em>, som så:</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 vil få tilgang til denne informasjonen fra koden bak filen senere når vi ønsker å hente data fra databasen.</p> <hr> <h2> Trinn 4: Fjerner ulovlige tegn fra XML-dokumentet</h2> <p> Noen tegn har spesiell betydning i <code>XML</code>. Hvis du plasserer et tegn, for eksempel "<", 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>enhet referanse</code> (<).</p> <p> Det er fem forhåndsdefinerte entitetsreferanser i XML:</p> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td> <</td> <td> <</td> <td> mindre enn</td> </tr> <tr> <td> ></td> <td> ></td> <td> større enn</td> </tr> <tr> <td> &</td> <td> &</td> <td> ampersand </td> </tr> <tr> <td> '</td> <td> '</td> <td> apostrof</td> </tr> <tr> <td> "</td> <td> "</td> <td> anførselstegn</td> </tr> </table> <p> For å unngå at vår RSS-feed produserer en feil, må vi endre alle ulovlige tegn i et RSS-dokument med deres referanser til enheten. Legg til følgende kode i koden bak filen av <code>rss.aspx</code> side (<code>rss.aspx.cs</code>):</p> <pre name="code"> beskyttet streng RemoveIllegalCharacters (objektinngang) // kaste inngangen til en strengstrengdata = input.ToString (); // erstatte ulovlige tegn i XML-dokumenter med deres enhet referanser data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); returnere data; </pre> <p>De <code>RemoveIllegalCharacters ()</code> funksjonen utfører noen få enkle strengutskiftninger, om nødvendig. Vi vil ringe denne funksjonen fra <code>rss.aspx</code> siden kort.</p> <hr> <h2> Trinn 5: Henter data fra databasen</h2> <p> Legg til følgende kode i <code>Page_Load</code> hendelse handler:</p> <pre name="code"> beskyttet ugyldig Page_Load (objekt sender, EventArgs e) // Få tilkoblingstreng fra web.config filstreng connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString; // Opprett SqlConnection-objektet SqlConnection sqlConn = ny SqlConnection (); sqlConn.ConnectionString = connString; // SQL-spørring for å hente data fra database streng sqlQuery = "VELG TOP 10 Artikkel, Tittel, Forfatter, Beskrivelse, Dato Publisert FRA Nyheter ORDER AV DatoPublisert DESC"; // Opprett SqlCommand objekt SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // åpen forbindelse og deretter bindende data til RepeaterRSS kontroll sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close (); </pre> <p> Koden ovenfor vil forsøke å hente de ti siste nyhetene fra databasen din. Det vil da binde dem til en <code>Repeater</code> styre (<code>RepeaterRSS</code>) når siden er lastet inn.</p> <hr> <h2> Trinn 6: Gjenoppretting av data </h2> <p>Dette er vårt siste skritt. Det er på tide å gjøre gjenstander fra <code>Nyheter</code> Tabell inn i en passende RSS 2.0 syndikasjonsfil. Den enkleste og raskeste måten å vise database data som XML er å bruke en <code>Repeater</code> styre (<code>RepeaterRSS</code>). Spesielt, den <code>Repeater</code> vil vise <code><rss></code>, <code><channel></code>, og nettstedrelaterte elementetiketter i sin <code>HeaderTemplate</code> og <code>FooterTemplate</code> maler og <code><item></code> elementer i <code>ItemTemplate</code> mal. Ikke glem å ringe hjelperen <code>RemoveIllegalCharacters ()</code> funksjon for å erstatte uønskede tegn fra strengutgangen.</p> <p>Følgende er HTML-delen av vår ASP.NET-webside (<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>Navn på nettstedet http://www.yourdomain.com Kort beskrivelse av nettsiden. <%# 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ørste som er verdt å merke seg her er at rss.aspx filen ovenfor inneholder bare Repeater styre (RepeaterRSS), og ingen andre HTML-oppslag eller webkontroller. Dette skyldes at vi vil at siden skal sende ut noe annet enn XML-utdata. Vi satte Innholdstype av @Side direktiv til "Text / xml" å indikere at utgangen av rss.aspx Siden er et XML-dokument.

    I HeaderTemplate mal av Repeater kontroll, plasserer vi og elementer.

    Deretter i ItemTemplate, vi plasserer elementer som inneholder </code>, <code><link></code>, <code><author></code>, <code><pubDate></code>, og <code><description></code> elementer, som stedet for databasefelter. Vi kaller <code>RemoveIllegalCharacters ()</code> funksjon når du legger til <code>Tittel</code>, <code>Forfatter</code>, og <code>Beskrivelse</code> database felt til <code>XML</code> produksjon. Husk, denne funksjonen erstatter bare ulovlige XML-tegn med deres entitetsreferanser.</p> <p>Endelig, den <code>DatePublished</code> database felt, inngått i <code><pubDate></code> elementet, er formatert ved hjelp av <code>String.Format</code> metode. Standardformatet spesifiserer, <code>R</code>, formater den <code>DatePublished</code> Verdien er riktig i henhold til RFC 822, dato og klokkespesifikasjon. Dette begynner med en valgfri forkortelse med tre bokstaver og komma, etterfulgt av en nødvendig dag, den forkortede tre-letteren og deretter året etterfulgt av en tid med tidssone-navnet, for eksempel <code>Torsdag 04 november 2010 20:50:26 GMT</code>.</p> <hr> <h2>Resultatet </h2> <p>Og der har vi det! Med minimal innsats har vi opprettet en tilpasset RSS-feed for et ASP.NET-program. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_3.jpg"> <hr> <h2>Den komplette 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>Navn på nettstedet http://www.yourdomain.com Kort beskrivelse av nettsiden. <%# 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

     bruker system; bruker System.Collections; bruker System.Configuration; bruker System.Data; bruker System.Linq; bruker System.Web; bruker System.Web.Security; bruker System.Web.UI; bruker System.Web.UI.HtmlControls; bruker System.Web.UI.WebControls; bruker System.Web.UI.WebControls.WebParts; bruker System.Xml.Linq; bruker System.Data.SqlClient; namespace NettutsTutorial2 public partial class rss: System.Web.UI.Page protected void Page_Load (objekt sender, EventArgs e) // Få tilkoblingsstreng fra web.config filstreng connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString ; // Opprett SqlConnection-objektet SqlConnection sqlConn = ny SqlConnection (); sqlConn.ConnectionString = connString; // SQL-spørring for å hente data fra database streng sqlQuery = "VELG TOP 10 Artikkel, Tittel, Forfatter, Beskrivelse, Dato Publisert FRA Nyheter ORDER AV DatoPublisert DESC"; // Opprett SqlCommand objekt SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // åpen forbindelse og deretter bindende data til RepeaterRSS kontroll sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close ();  beskyttet streng RemoveIllegalCharacters (objektinngang) // kaste inngangen til en strengstrengdata = input.ToString (); // erstatte ulovlige tegn i XML-dokumenter med deres enhet referanser data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); returnere data; 

    Web.config-filen

          

    Konklusjon

    Å lage et RSS-feed med ASP.NET er ganske enkelt, ikke sant? Vi trenger bare å forstå RSS 2.0 spesifikasjonen. Utover det ved å bruke .NET Repeater kontroll, vi kan gjøre gjenstander fra en database til RSS-dokumentet. De fleste innholdsstyringssystemer vil ha denne funksjonen som standard. Men hvis du er en utvikler, og bygger et ASP.NET-nettsted fra grunnen av, har du nå ferdighetene til å bygge din egen tilpassede feed.

    Glad koding!