Come costruire un feed RSS con ASP.NET

Nel corso di questo tutorial, esamineremo come creare un feed RSS con il framework ASP.NET. Avere un feed RSS per il tuo sito è diventato una necessità negli ultimi anni. Con blog o siti di notizie aggiornati di frequente, e con la grande quantità di blog e siti Web di notizie là fuori, RSS ha permesso ai lettori di tenersi aggiornati con nuovi contenuti senza essere costretti a visitarli. Una volta completato questo tutorial, saprai come creare un feed RSS con ASP.NET e come eseguire il rendering di documenti XML su pagine Web ASP.NET.


Passaggio 0: Introduzione RSS 2.0

L'RSS è un formato di syndication di contenuti web. Sta per "Really Simple Syndication" ed è scritto in XML. Tutti i file RSS devono essere conformi alle specifiche XML 1.0, come pubblicato dal World Wide Web Consortium (W3C). Con gli RSS, è possibile distribuire contenuti web aggiornati da un sito Web a migliaia di altri in tutto il mondo. Per semplificare il termine, RSS consente una rapida navigazione per notizie e aggiornamenti.

Le regole di sintassi di RSS 2.0 sono abbastanza semplici, anche se rigorose. Ecco un semplice documento RSS:

    Il nome del tuo sito web http://www.yourdomain.com Esercitazione RSS gratuita  Primo articolo http://www.yourdomain.com/article.aspx?ID=1 La descrizione del primo articolo.   Secondo articolo http://www.yourdomain.com/article.aspx?ID=2 La descrizione del secondo articolo.   

La prima riga del documento, la dichiarazione XML, definisce la versione XML e la codifica dei caratteri utilizzati nel documento. In questo caso, il documento è conforme alle specifiche 1.0 di XML e utilizza il utf-8 set di caratteri. La riga successiva è la dichiarazione RSS, che identifica che si tratta, in realtà, di un documento RSS (in particolare, versione RSS 2.0).

La riga successiva contiene il elemento. Questo elemento è usato per descrivere il feed RSS. Il elemento ha tre elementi figlio richiesti:

  • </code> - Definisce il titolo del canale (ad es. Il nome del tuo sito web)</li> <li> <code><link></code> - Definisce il collegamento ipertestuale al canale (ad es. Http://www.yourdomain.com)</li> <li> <code><description></code> - Descrive il canale (ad es. Tutorial RSS gratuito)</li> </ul> <p> Ogni <code><channel></code> l'elemento può avere uno o più <code><item></code> elementi. Ogni <code><item></code> elemento definisce un articolo o "storia" all'interno del feed RSS.</p> <p> Il <code><item></code> elemento richiede tre elementi figlio:</p> <ul> <li> <code><title></code> - Definisce il titolo dell'articolo (ad esempio, il primo articolo)</li> <li> <code><link></code> - Definisce il collegamento ipertestuale all'elemento (ad es. Http://www.yourdomain.com/article.aspx?ID=1)</li> <li> <code><description></code> - Descrive l'oggetto (ad esempio la descrizione del primo articolo)</li> </ul> <p>Se visualizzato in Firefox, il documento RSS sopra dovrebbe essere simile a: </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet.jpg"> <hr> <h2> Passaggio 1: Introduzione</h2> <p>Per seguire questo tutorial, immagina di lavorare come sviluppatore web e stai costruendo un sito Web di notizie in cui tutte le notizie sono archiviate nel database SQL Server di Microsoft. Nello specifico, gli articoli sono memorizzati in una tabella chiamata <code>notizia</code>, che contiene i seguenti campi:</p> <ul> <li> <strong>ArticleID</strong> - un campo intero di chiave primaria a incremento automatico che identifica in modo univoco ciascun articolo</li> <li> <strong>Titolo</strong> - un <code>nvarchar (256)</code>, specificando il titolo dell'articolo</li> <li> <strong>Autore</strong> - un<code>varchar (50)</code>, specificando l'autore dell'articolo</li> <li> <strong>Descrizione</strong> - un<code>varchar (500)</code>, fornendo una descrizione più approfondita dell'articolo</li> <li> <strong>datePublished</strong> - un <code>appuntamento</code>, indicando la data in cui l'articolo è stato pubblicato</li> </ul> <p> Si noti che potrebbero esserci altri campi nel <code>notizia</code> tabella, ma quelli elencati sopra sono gli unici che siamo interessati a utilizzare - almeno ai fini di un feed RSS.</p> <p>Useremo Visual Studio per completare l'esempio. Se non hai la versione completa di VS, puoi prendere l'Express Edition gratuita.</p> <hr> <h2> Passaggio 2: creazione di una pagina rss.aspx</h2> <p>Il nostro prossimo passo è creare una pagina Web ASP.NET (<code>rss.aspx</code>) che visualizzerà un elenco delle ultime notizie come un documento RSS 2.0 correttamente formattato. Nel <code>Esploratore di soluzioni</code>, fare clic con il tasto destro del mouse sul nome del progetto, quindi fare clic <code>Aggiungi un nuovo elemento</code>. Nella finestra di dialogo, sotto Modelli di Visual Studio installati, fare clic su <code>Modulo Web</code>. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_2.jpg"> <p> Nel <code>Nome</code> casella, digitare un nome per la nuova pagina Web (<code>rss.aspx</code>), quindi fare clic <code>Inserisci</code>. La nuova pagina Web ASP.NET (<code>rss.aspx</code>) viene creato e visualizzato di conseguenza.</p> <p>Perché noi vogliamo il <code>rss.aspx</code> pagina per produrre output XML, la prima cosa che dobbiamo fare è rimuovere tutto il markup HTML oi controlli web dalla pagina, e quindi impostare <code>Tipo di contenuto</code> proprietà di <code>@pagina</code> direttiva a "<code>text / xml</code>".</p> <p>Dopo aver cancellato tutto il codice HTML da <code>rss.aspx</code> pagina, aggiungi a <code>Ripetitore</code> controllo nella pagina. Useremo il controllo Repeater per il rendering del documento RSS sulla pagina rss.aspx.</p> <p>Ecco la vista di origine del <code>rss.aspx</code> pagina, dopo aver apportato alcune modifiche:</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> Passaggio 3: installazione della stringa di connessione</h2> <p>Successivamente, vogliamo impostare la stringa di connessione dell'origine dati, all'interno di <code>web.config</code> file. Salvando le informazioni sulla stringa di connessione, eviteremo di dover codificare il codice nel file code-behind. Questo semplifica le cose, se le informazioni sulla stringa di connessione cambiano in futuro. Mettilo nel <code><connectionStrings></code> sezione sotto <em>elemento di configurazione</em>, così:</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>Accederemo a queste informazioni dal file code-behind in un secondo momento quando vogliamo recuperare i dati dal database.</p> <hr> <h2> Passaggio 4: rimozione di caratteri non validi dal documento XML</h2> <p> Alcuni personaggi hanno un significato speciale in <code>XML</code>. Se metti un personaggio, come "<", 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>riferimento all'entità</code> (<).</p> <p> Esistono cinque riferimenti di entità predefiniti in XML:</p> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td> <</td> <td> <</td> <td> meno di</td> </tr> <tr> <td> ></td> <td> ></td> <td> più grande di</td> </tr> <tr> <td> &</td> <td> &</td> <td> ampersand </td> </tr> <tr> <td> '</td> <td> '</td> <td> apostrofo</td> </tr> <tr> <td> "</td> <td> "</td> <td> Virgolette</td> </tr> </table> <p> Per evitare che il nostro feed RSS produca un errore, dobbiamo modificare tutti i caratteri non validi in un documento RSS con i relativi riferimenti di entità. Aggiungere il seguente codice nel file code-behind del file <code>rss.aspx</code> pagina (<code>rss.aspx.cs</code>):</p> <pre name="code"> stringa protetta RemoveIllegalCharacters (input dell'oggetto) // cast l'input in una stringa string data = input.ToString (); // sostituisce i caratteri non validi nei documenti XML con i loro riferimenti di entità data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); dati di ritorno; </pre> <p>Il <code>RemoveIllegalCharacters ()</code> funzione esegue alcune semplici sostituzioni di stringa, se necessario. Chiameremo questa funzione dal <code>rss.aspx</code> pagina a breve.</p> <hr> <h2> Passaggio 5: recupero dei dati dal database</h2> <p> Aggiungi il seguente codice nel <code>Page_Load</code> gestore di eventi:</p> <pre name="code"> protected page_Load (object mender, EventArgs e) // Ottieni la stringa di connessione dalla stringa di file web.config connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString; // Crea oggetto SqlConnection SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // Query SQL per recuperare i dati dalla stringa del database sqlQuery = "SELEZIONA TOP 10 ArticleID, Titolo, Autore, Descrizione, DataPublished FROM News ORDER BY DatePublished DESC"; // Crea oggetto SqlCommand SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // apre la connessione e quindi associa i dati al controllo RepeaterRSS sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close (); </pre> <p> Il codice sopra tenterà di recuperare le dieci notizie più recenti dal tuo database. Li legherà quindi a <code>Ripetitore</code> controllo (<code>RepeaterRSS</code>) quando la pagina è caricata.</p> <hr> <h2> Passaggio 6: dati di rendering </h2> <p>Questo è il nostro ultimo passo. È tempo di rendere gli oggetti dal <code>notizia</code> tabella in un file di syndication RSS 2.0 appropriato. Il modo più semplice e veloce per visualizzare i dati del database come XML è usare a <code>Ripetitore</code> controllo (<code>RepeaterRSS</code>). In particolare, il <code>Ripetitore</code> mostrerà il <code><rss></code>, <code><channel></code>, e tag di elemento relativi al sito Web nella sua <code>HeaderTemplate</code> e <code>FooterTemplate</code> modelli e il <code><item></code> elementi nel <code>ItemTemplate</code> modello. Non dimenticare di chiamare l'aiutante <code>RemoveIllegalCharacters ()</code> funzione per sostituire i caratteri indesiderati dall'output della stringa.</p> <p>Quanto segue è la porzione HTML della nostra pagina 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>Nome del sito web http://www.yourdomain.com Breve descrizione del sito. <%# 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"))%>

    La prima cosa che vale la pena notare qui è che il rss.aspx il file sopra contiene solo il Ripetitore controllo (RepeaterRSS) e nessun altro markup HTML o controlli Web. Questo perché vogliamo che la pagina non emetta altro che l'output XML. Abbiamo impostato il Tipo di contenuto del @Pagina direttiva a "Text / xml" per indicare che l'output del rss.aspx la pagina è un documento XML.

    Nel HeaderTemplate modello del Ripetitore controllo, mettiamo il e elementi.

    Successivamente, nel ItemTemplate, mettiamo il elementi, che contengono il </code>, <code><link></code>, <code><author></code>, <code><pubDate></code>, e <code><description></code> elementi, come il posto per i campi del database. Chiamiamo il <code>RemoveIllegalCharacters ()</code> funzione quando si aggiunge il <code>Titolo</code>, <code>Autore</code>, e <code>Descrizione</code> campi del database al <code>XML</code> produzione. Ricorda, questa funzione sostituisce semplicemente qualsiasi carattere XML illegale con i relativi riferimenti di entità.</p> <p>Finalmente, il <code>datePublished</code> campo del database, inserito nel <code><pubDate></code> elemento, è formattato usando il <code>String.Format</code> metodo. Lo specificatore di formato standard, <code>R</code>, formatta il <code>datePublished</code> valore appropriato secondo RFC 822, data e ora specifica. Questo inizia con un'abbreviazione e una virgola di tre lettere facoltative, seguita da un giorno richiesto, il mese abbreviato di tre lettere e poi l'anno, seguito da un orario con il nome del fuso orario, ad esempio <code>Gio, 04 Nov 2010 20:50:26 GMT</code>.</p> <hr> <h2>Il risultato </h2> <p>E lì ce l'abbiamo! Con il minimo sforzo, abbiamo creato un feed RSS personalizzato per un'applicazione ASP.NET. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_3.jpg"> <hr> <h2>Il codice completo</h2> <h3>Il file 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>Nome del sito web http://www.yourdomain.com Breve descrizione del sito. <%# 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"))%>

    Il file rss.aspx.cs

     usando il sistema; usando System.Collections; usando System.Configuration; usando System.Data; using System.Linq; usando System.Web; using System.Web.Security; usando System.Web.UI; usando System.Web.UI.HtmlControls; utilizzando System.Web.UI.WebControls; utilizzando System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; namespace NettutsTutorial2 public partial class rss: System.Web.UI.Page protected void Page_Load (object mittente, EventArgs e) // Ottieni la stringa di connessione dalla stringa di file web.config connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString ; // Crea oggetto SqlConnection SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // Query SQL per recuperare i dati dalla stringa del database sqlQuery = "SELEZIONA TOP 10 ArticleID, Titolo, Autore, Descrizione, DataPublished FROM News ORDER BY DatePublished DESC"; // Crea oggetto SqlCommand SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // apre la connessione e quindi associa i dati al controllo RepeaterRSS sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close ();  stringa protetta RemoveIllegalCharacters (input oggetto) // cast l'input in una stringa string data = input.ToString (); // sostituisce i caratteri non validi nei documenti XML con i loro riferimenti di entità data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); dati di ritorno; 

    Il file Web.config

          

    Conclusione

    Creare un feed RSS con ASP.NET è abbastanza semplice, non è vero? Abbiamo solo bisogno di capire le specifiche RSS 2.0. Oltre a ciò, utilizzando .NET Ripetitore controllo, possiamo eseguire il rendering di elementi da un database nel documento RSS. La maggior parte dei sistemi di gestione dei contenuti avrà questa funzionalità per impostazione predefinita. Tuttavia, se sei uno sviluppatore e stai creando un sito Web ASP.NET da zero, ora hai le competenze per creare il tuo feed personalizzato.

    Felice codifica!