Cum de a construi un flux RSS cu ASP.NET

În cursul acestui tutorial, vom examina modul de creare a unui Feed RSS cu cadrul ASP.NET. Având un feed RSS pentru site-ul dvs. a devenit o necesitate în ultimii ani. Cu blogurile sau site-urile de știri fiind actualizate frecvent și cu numărul mare de bloguri și site-uri de știri de acolo, RSS a permis cititorilor să țină pasul cu conținut nou, fără a fi nevoiți să-i viziteze. După ce ați terminat acest tutorial, veți ști cum să creați un flux RSS cu ASP.NET și cum să redați documente XML pe paginile Web ASP.NET.


Pasul 0: Introducere în RSS 2.0

RSS este un format de sindicalizare a conținutului web. Aceasta înseamnă "Really Simple Syndication" și este scrisă în XML. Toate fișierele RSS trebuie să respecte specificația XML 1.0, publicată de Consorțiul World Wide Web (W3C). Cu RSS, este posibil să distribuiți conținut web actualizat de pe un site web la alte mii de oameni din întreaga lume. Pentru a simplifica termenul, RSS permite navigarea rapidă pentru știri și actualizări.

Regulile sintaxei RSS 2.0 sunt destul de simple, deși stricte. Iată un simplu document RSS:

    Numele site-ului dvs. http://www.yourdomain.com Free Tutorial RSS  Primul articol http://www.yourdomain.com/article.aspx?ID=1 Descrierea primului articol.   Al doilea articol http://www.yourdomain.com/article.aspx?ID=2 Descrierea celui de-al doilea articol.   

Prima linie din document - declarația XML - definește versiunea XML și codificarea caracterelor utilizate în document. În acest caz, documentul este conform specificației 1.0 a XML și utilizează utf-8 set de caractere. Următorul rând este declarația RSS, care identifică faptul că acesta este, de fapt, un document RSS (mai exact, versiunea RSS 2.0).

Următorul rând conține element. Acest element este folosit pentru a descrie fluxul RSS. elementul are trei elemente de copil necesare:

  • </code> - Definește titlul canalului (de exemplu, numele site-ului dvs.)</li> <li> <code><link></code> - Definește hyperlinkul la canal (de exemplu, http://www.yourdomain.com)</li> <li> <code><description></code> - Descrie canalul (de ex. Tutorial gratuit RSS)</li> </ul> <p> Fiecare <code><channel></code> element poate avea una sau mai multe <code><item></code> elemente. Fiecare <code><item></code> element definește un articol sau "poveste" în feedul RSS.</p> <p> <code><item></code> elementul necesită trei elemente copil:</p> <ul> <li> <code><title></code> - Definește titlul articolului (de exemplu, primul articol)</li> <li> <code><link></code> - Definește hyperlinkul la element (de exemplu, http://www.yourdomain.com/article.aspx?ID=1)</li> <li> <code><description></code> - Descrie elementul (de ex. Descrierea primului articol)</li> </ul> <p>Când este vizualizat în Firefox, documentul RSS de mai sus ar trebui să arate similar cu: </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet.jpg"> <hr> <h2> Pasul 1: Începeți</h2> <p>Pentru a urma acest tutorial, imaginați-vă că lucrați ca dezvoltator web și construiți un site de știri unde toate știrile sunt stocate în baza de date Microsoft SQL Server. În mod specific, articolele sunt stocate într-un tabel numit <code>Știri</code>, care conține următoarele câmpuri:</p> <ul> <li> <strong>articleID</strong> - un câmp integrat cu cheie primară cu auto-incrementare identificând în mod unic fiecare articol</li> <li> <strong>Titlu</strong> - A <code>nvarchar (256)</code>, specificând titlul articolului</li> <li> <strong>Autor</strong> - a n<code>varchar (50)</code>, specificând autorul articolului</li> <li> <strong>Descriere</strong> - a n<code>varchar (500)</code>, oferind o descriere mai detaliată a articolului</li> <li> <strong>DatePublished</strong> - A <code>datetime</code>, indicând data publicării articolului</li> </ul> <p> Rețineți că ar putea exista alte câmpuri în <code>Știri</code> tabel, dar cele enumerate mai sus sunt singurele care suntem interesați să le folosim - cel puțin în scopul unei feed-uri RSS.</p> <p>Vom utiliza Visual Studio pentru a termina exemplul. Dacă nu aveți versiunea completă a VS, puteți să accesați Express Edition gratuită.</p> <hr> <h2> Pasul 2: Crearea unei pagini rss.aspx</h2> <p>Următorul pas este să creați o pagină Web ASP.NET (<code>rss.aspx</code>) care va afișa o listă cu cele mai recente articole de știri ca un document RSS 2.0 corect formatat. În <code>Soluție Explorer</code>, faceți clic cu butonul din dreapta pe numele proiectului, apoi faceți clic pe <code>Adăugați un element nou</code>. În această casetă de dialog, sub șabloanele instalate Visual Studio, faceți clic pe <code>Formularul Web</code>. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_2.jpg"> <p> În <code>Nume</code> , introduceți un nume pentru noua pagină web (<code>rss.aspx</code>), apoi faceți clic pe <code>Adăuga</code>. Noua pagină Web ASP.NET (<code>rss.aspx</code>) este creat și afișat, în consecință.</p> <p>Pentru că vrem <code>rss.aspx</code> pentru a produce o ieșire XML, primul lucru pe care trebuie să-l facem este să eliminăm toate marcajele HTML sau comenzile Web din pagină, apoi să setăm <code>Tipul de conținut</code> proprietatea <code>@pagină</code> directivă "<code>text / xml</code>".</p> <p>După ștergerea tuturor marcajelor HTML de la <code>rss.aspx</code> pagina, adăugați o <code>recidivist</code> controlați în pagină. Vom folosi controlul Repeater pentru a afișa documentul RSS pe pagina rss.aspx.</p> <p>Iată punctul de vedere al sursei <code>rss.aspx</code> după ce am făcut unele modificări:</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> Pasul 3: Configurați șirul de conectare</h2> <p>Apoi, dorim să setăm șirul de conexiune al sursei de date, în cadrul <code>web.config</code> fişier. Prin salvarea informațiilor despre șir de conexiuni, vom evita să trebuiască să-l codificăm cu greu în fișierul cod-din spate. Acest lucru simplifică lucrurile, dacă informațiile despre șirul de conexiune se modifică în viitor. Plasați-l în <code><connectionStrings></code> secțiunea de sub <em>element de configurare</em>, ca astfel:</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>Vom accesa aceste informații din fișierul cod-spate mai târziu când dorim să preluăm datele din baza de date.</p> <hr> <h2> Pasul 4: Eliminarea caracterelor ilegale din documentul XML</h2> <p> Unele personaje au un înțeles special <code>XML</code>. Dacă plasați un caracter, cum ar fi "<", 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>entitate de referință</code> (<).</p> <p> Există cinci referințe de entități predefinite în XML:</p> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td> <</td> <td> <</td> <td> mai puțin decât</td> </tr> <tr> <td> ></td> <td> ></td> <td> mai mare ca</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> Ghilimele</td> </tr> </table> <p> Pentru a evita producerea unei erori a feedului nostru RSS, trebuie să schimbăm toate caracterele ilegale dintr-un document RSS cu referințele entității. Adăugați următorul cod în fișierul de cod din spatele funcției <code>rss.aspx</code> pagina (<code>rss.aspx.cs</code>):</p> <pre name="code"> șir protejat RemoveIllegalCharacters (intrare obiect) // exprimă intrarea într-o șir de șir de date data = input.ToString (); // înlocuiți caracterele ilegale din documentele XML cu referințele entității lor date = data.Replace ("&", "&"); date = date.Replace ("\" "," "); date = date.Replace ("" ","'"); date = date.Replace ("<", "<"); data = data.Replace(">","> "); datele returnate; </pre> <p> <code>RemoveIllegalCharacters ()</code> funcția efectuează câteva înlocuiri de șir simple, dacă este necesar. Vom numi această funcție din <code>rss.aspx</code> în scurt timp.</p> <hr> <h2> Pasul 5: Preluarea datelor din baza de date</h2> <p> Adăugați următorul cod în <code>Page_Load</code> organizatorul evenimentului:</p> <pre name="code"> protejat void Page_Load (expeditor obiect, EventArgs e) // Obțineți șir de conexiuni din șirul de fișiere web.config connString = ConfigurationManager.ConnectionStrings ["ConnectionString"] ConnectionString; // Creați obiectul SqlConnection SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // interogare SQL pentru a prelua date din șirul de baze de date sqlQuery = "SELECT TOP 10 ID articol, titlul, autorul, descrierea, datapublicată FROM News ORDER BY DatePublished DESC"; // Crearea obiectului SqlCommand SqlCommand cmd = nou SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // deschideți conexiunea și apoi legați datele în controlul RepeaterRSS sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close (); </pre> <p> Codul de mai sus va încerca să recupereze cele zece cele mai recente știri din baza dvs. de date. Apoi le va lega la a <code>recidivist</code> Control (<code>RepeaterRSS</code>) când pagina este încărcată.</p> <hr> <h2> Pasul 6: Realizarea datelor </h2> <p>Acesta este ultimul nostru pas. Este timpul să redați elemente de la <code>Știri</code> tabel într-un fișier de sindicare RSS 2.0 adecvat. Cea mai simplă și mai rapidă modalitate de a afișa datele bazei de date ca XML este de a utiliza a <code>recidivist</code> Control (<code>RepeaterRSS</code>). Mai exact, <code>recidivist</code> va afișa <code><rss></code>, <code><channel></code>, și etichetele legate de site-uri Web din site-ul său <code>HeaderTemplate</code> și <code>FooterTemplate</code> șabloane și <code><item></code> elemente în <code>ItemTemplate</code> șablon. Nu uitați să sunați la ajutor <code>RemoveIllegalCharacters ()</code> pentru a înlocui caracterele nedorite din ieșirea de șir.</p> <p>Următoarea este partea HTML a paginii Web ASP.NET (<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>Numele site-ului http://www.yourdomain.com Scurtă descriere a site-ului. <%# 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"))%>

    Primul lucru care merită menționat aici este că rss.aspx fișierul de mai sus conține numai recidivist Control (RepeaterRSS) și niciun alt marcaj HTML sau controale Web. Acest lucru se datorează faptului că dorim ca pagina să nu emită decât o ieșire XML. Am setat Tipul de conținut din @Pagină directivă la "Text / XML" pentru a indica faptul că ieșirea din rss.aspx pagina este un document XML.

    În HeaderTemplate șablon al recidivist control, plasăm și element.

    Apoi, în ItemTemplate, noi plasăm elemente care conțin </code>, <code><link></code>, <code><author></code>, <code><pubDate></code>, și <code><description></code> elemente, ca loc pentru câmpurile bazei de date. Noi numim <code>RemoveIllegalCharacters ()</code> atunci când adăugați <code>Titlu</code>, <code>Autor</code>, și <code>Descriere</code> baze de date la <code>XML</code> de ieșire. Rețineți că această funcție înlocuiește pur și simplu orice caractere ilegale XML cu referințele entității.</p> <p>În cele din urmă, <code>DatePublished</code> baza de date, introdusă în <code><pubDate></code> element, este formatat folosind <code>String.Format</code> metodă. Specificatorul de format standard, <code>R</code>, formatează <code>DatePublished</code> valoare corespunzător conform RFC 822, Date and Time Specification. Aceasta începe cu o abreviere opțională de trei litere și o virgulă, urmată de o zi cerută, luna abreviată cu trei litere, apoi cu anul, urmat de un timp cu numele zonei de timp, cum ar fi <code>Joi, 04 Noi 2010 20:50:26 GMT</code>.</p> <hr> <h2>Rezultatul </h2> <p>Și acolo avem! Cu un efort minim, am creat un feed RSS personalizat pentru o aplicație ASP.NET. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_3.jpg"> <hr> <h2>Codul complet</h2> <h3>Fișierul rss.aspx</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>Numele site-ului http://www.yourdomain.com Scurtă descriere a site-ului. <%# 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"))%>

    Fișierul rss.aspx.cs

     utilizând Sistemul; utilizând System.Collections; utilizând System.Configuration; utilizând System.Data; folosind System.Linq; utilizând System.Web; utilizând System.Web.Security; utilizând System.Web.UI; utilizând System.Web.UI.HtmlControls; utilizând System.Web.UI.WebControls; utilizând System.Web.UI.WebControls.WebParts; folosind System.Xml.Linq; utilizând System.Data.SqlClient; namespace NettutsTutorial2 clasa parțială publică rss: System.Web.UI.Page protejată void Page_Load (expeditor obiect, EventArgs e) // Obțineți șirul de conexiune din șirul de fișiere web.config connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ; // Creați obiectul SqlConnection SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // interogare SQL pentru a prelua date din șirul de baze de date sqlQuery = "SELECT TOP 10 ID articol, titlul, autorul, descrierea, datapublicată FROM News ORDER BY DatePublished DESC"; // Crearea obiectului SqlCommand SqlCommand cmd = nou SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // deschideți conexiunea și apoi legați datele în controlul RepeaterRSS sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close ();  șir protejat RemoveIllegalCharacters (intrare obiect) // exprimă intrarea într-un șir șir de date = input.ToString (); // înlocuiți caracterele ilegale din documentele XML cu referințele entității lor date = data.Replace ("&", "&"); date = date.Replace ("\" "," "); date = date.Replace ("" ","'"); date = date.Replace ("<", "<"); data = data.Replace(">","> "); datele returnate; 

    Fișierul Web.config

          

    Concluzie

    Crearea unui feed RSS cu ASP.NET este destul de simplă, nu-i așa? Trebuie doar să înțelegem specificația RSS 2.0. Dincolo de asta, folosind .NET recidivist de control, putem face elemente dintr-o bază de date în documentul RSS. Majoritatea sistemelor de gestionare a conținutului vor avea această capacitate în mod implicit. Cu toate acestea, dacă sunteți un dezvoltator și construiți un site ASP.NET de la zero, acum aveți abilitățile necesare pentru a vă crea feedul personalizat.

    Codificare fericită!

    Cod