So erstellen Sie einen RSS-Feed mit ASP.NET

Im Verlauf dieses Lernprogramms erfahren Sie, wie Sie einen RSS-Feed mit dem ASP.NET-Framework erstellen. Ein RSS-Feed für Ihre Website ist in den letzten Jahren zu einer Notwendigkeit geworden. Durch die häufigen Aktualisierungen von Blogs oder Nachrichtenseiten und die große Anzahl von Blogs und Nachrichtenseiten bietet RSS den Lesern die Möglichkeit, mit neuen Inhalten auf dem Laufenden zu bleiben, ohne sie dazu zwingen zu müssen. Nach Abschluss dieses Lernprogramms können Sie einen RSS-Feed mit ASP.NET erstellen und XML-Dokumente auf ASP.NET-Webseiten rendern.


Schritt 0: RSS 2.0 Einführung

RSS ist ein Format für das Formatieren von Webinhalten. Es steht für "Really Simple Syndication" und ist in XML geschrieben. Alle RSS-Dateien müssen der XML 1.0-Spezifikation entsprechen, die vom World Wide Web Consortium (W3C) veröffentlicht wurde. Mit RSS ist es möglich, aktuelle Webinhalte von einer Website an Tausende von anderen auf der ganzen Welt zu verteilen. Um den Begriff zu vereinfachen, ermöglicht RSS ein schnelles Durchsuchen von Nachrichten und Updates.

Die Syntaxregeln von RSS 2.0 sind recht einfach, wenn auch streng. Hier ist ein einfaches RSS-Dokument:

    Ihr Website-Name http://www.ihredomain.com Kostenloses RSS-Tutorial  Erster Artikel http://www.ihredomain.com/article.aspx?ID=1 Die Beschreibung des ersten Artikels.   Zweiter Artikel http://www.ihredomain.com/article.aspx?ID=2 Die Beschreibung des zweiten Artikels.   

Die erste Zeile des Dokuments - die XML-Deklaration - definiert die XML-Version und die im Dokument verwendete Zeichencodierung. In diesem Fall entspricht das Dokument der 1.0-Spezifikation von XML und verwendet die utf-8 Zeichensatz. Die nächste Zeile ist die RSS-Deklaration, die angibt, dass es sich tatsächlich um ein RSS-Dokument handelt (insbesondere RSS-Version 2.0)..

Die nächste Zeile enthält das Element. Dieses Element wird zur Beschreibung des RSS-Feeds verwendet. Das Element hat drei erforderliche untergeordnete Elemente:

  • </code> - Definiert den Titel des Channels (z. B. Name Ihrer Website).</li> <li> <code><link></code> - Definiert den Hyperlink zum Channel (z. B. http://www.IhreDomain.com).</li> <li> <code><description></code> - Beschreibt den Kanal (z. B. Free RSS Tutorial).</li> </ul> <p> Jeder <code><channel></code> Element kann eine oder mehrere haben <code><item></code> Elemente. Jeder <code><item></code> Element definiert einen Artikel oder eine "Story" im RSS-Feed.</p> <p> Das <code><item></code> Element erfordert drei untergeordnete Elemente:</p> <ul> <li> <code><title></code> - Definiert den Titel des Artikels (z. B. Erster Artikel).</li> <li> <code><link></code> - Definiert den Hyperlink zum Element (z. B. http://www.IhreDomain.com/article.aspx?ID=1).</li> <li> <code><description></code> - Beschreibt den Artikel (z. B. Die Beschreibung des ersten Artikels).</li> </ul> <p>Bei der Anzeige in Firefox sollte das obige RSS-Dokument folgendermaßen aussehen: </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet.jpg"> <hr> <h2> Schritt 1: Erste Schritte</h2> <p>Stellen Sie sich vor, Sie arbeiten als Webentwickler und erstellen eine Nachrichten-Website, auf der alle Nachrichten in der SQL Server-Datenbank von Microsoft gespeichert sind. Insbesondere werden die Artikel in einer aufgerufenen Tabelle gespeichert <code>Nachrichten</code>, welches die folgenden Felder enthält:</p> <ul> <li> <strong>ArtikelID</strong> - ein Ganzzahlfeld mit automatischem Inkrement-Primärschlüssel, das jeden Artikel eindeutig identifiziert</li> <li> <strong>Titel</strong> - ein <code>nvarchar (256)</code>, Angabe des Titels des Artikels</li> <li> <strong>Autor</strong> - ein<code>Varchar (50)</code>, Angabe des Autors des Artikels</li> <li> <strong>Beschreibung</strong> - ein<code>varchar (500)</code>, ausführlichere Beschreibung des Artikels</li> <li> <strong>Veröffentlichungsdatum</strong> - ein <code>Terminzeit</code>, gibt das Datum an, an dem der Artikel veröffentlicht wurde</li> </ul> <p> Beachten Sie, dass möglicherweise weitere Felder in der vorhanden sind <code>Nachrichten</code> Tabelle, aber die oben aufgeführten sind die einzigen, an denen wir interessiert sind - zumindest für die Zwecke eines RSS-Feeds.</p> <p>Wir werden Visual Studio verwenden, um das Beispiel abzuschließen. Wenn Sie nicht über die Vollversion von VS verfügen, können Sie die kostenlose Express Edition erwerben.</p> <hr> <h2> Schritt 2: Erstellen einer rss.aspx-Seite</h2> <p>Im nächsten Schritt erstellen Sie eine ASP.NET-Webseite (<code>rss.aspx</code>), in dem eine Liste der neuesten Nachrichten als ordnungsgemäß formatiertes RSS 2.0-Dokument angezeigt wird. Im <code>Lösungsforscher</code>, Klicken Sie mit der rechten Maustaste auf den Projektnamen, und klicken Sie dann auf OK <code>Neues Element hinzufügen</code>. Klicken Sie in diesem Dialogfeld unter Installierte Vorlagen von Visual Studio auf <code>Web-Formular</code>. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_2.jpg"> <p> In dem <code>Name</code> Geben Sie im Feld einen Namen für die neue Webseite ein (<code>rss.aspx</code>) und dann auf <code>Hinzufügen</code>. Die neue ASP.NET-Webseite (<code>rss.aspx</code>) wird entsprechend erstellt und angezeigt.</p> <p>Weil wir das wollen <code>rss.aspx</code> Um XML-Ausgabe zu erzeugen, müssen Sie zunächst alle HTML-Markup- oder Web-Steuerelemente von der Seite entfernen und dann die <code>Inhaltstyp</code> Eigentum von <code>@Seite</code> Anweisung an "<code>Text / XML</code>".</p> <p>Nachdem Sie das gesamte HTML-Markup von gelöscht haben <code>rss.aspx</code> Seite hinzufügen a <code>Repeater</code> Steuerung in die Seite. Wir verwenden die Repeater-Steuerung, um das RSS-Dokument auf der Seite rss.aspx zu rendern.</p> <p>Hier ist die Quellansicht des <code>rss.aspx</code> Seite, nachdem wir einige Änderungen vorgenommen haben:</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> Schritt 3: Richten Sie die Verbindungszeichenfolge ein</h2> <p>Als nächstes möchten wir die Verbindungszeichenfolge der Datenquelle innerhalb von festlegen <code>Web.config</code> Datei. Wenn Sie die Informationen zur Verbindungszeichenfolge speichern, müssen Sie sie nicht hart in der Code-Behind-Datei kodieren. Dies vereinfacht die Dinge, wenn sich die Informationen zur Verbindungszeichenfolge in der Zukunft ändern. Legen Sie es in die <code><connectionStrings></code> Abschnitt unter <em>Konfigurationselement</em>, wie so:</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>Wir werden auf diese Informationen später aus der Code-Behind-Datei zugreifen, wenn wir Daten aus der Datenbank abrufen möchten.</p> <hr> <h2> Schritt 4: Entfernen ungültiger Zeichen aus dem XML-Dokument</h2> <p> Einige Zeichen haben eine besondere Bedeutung in <code>XML</code>. Wenn Sie einen Buchstaben platzieren, z. B. "<", 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>Entitätsreferenz</code> (<).</p> <p> Es gibt fünf vordefinierte Entitätsverweise in XML:</p> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td> <</td> <td> <</td> <td> weniger als</td> </tr> <tr> <td> ></td> <td> ></td> <td> größer als</td> </tr> <tr> <td> &</td> <td> &</td> <td> Et-Zeichen </td> </tr> <tr> <td> '</td> <td> '</td> <td> Apostroph</td> </tr> <tr> <td> "</td> <td> "</td> <td> Anführungszeichen</td> </tr> </table> <p> Um zu vermeiden, dass unser RSS-Feed einen Fehler erzeugt, müssen wir alle ungültigen Zeichen in einem RSS-Dokument mit ihren Entitätsreferenzen ändern. Fügen Sie den folgenden Code in die Code-Behind-Datei von ein <code>rss.aspx</code> Seite (<code>rss.aspx.cs</code>):</p> <pre name="code"> geschützte Zeichenfolge RemoveIllegalCharacters (Objekteingabe) // Umwandlung der Eingabe in eine Zeichenfolge Zeichenfolge data = input.ToString (); // Ersetzen Sie unzulässige Zeichen in XML-Dokumenten durch ihre Entitätsreferenzen. data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", ")'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); Daten zurückgeben; </pre> <p>Das <code>RemoveIllegalCharacters ()</code> Funktion führt bei Bedarf einige einfache Zeichenfolgenersetzungen aus. Wir werden diese Funktion von der <code>rss.aspx</code> Seite in Kürze.</p> <hr> <h2> Schritt 5: Daten aus der Datenbank abrufen</h2> <p> Fügen Sie dem folgenden Code hinzu <code>PageLoad</code> Eventhandler:</p> <pre name="code"> protected void PageLoad (Objektsender, EventArgs e) // Abrufen der Verbindungszeichenfolge aus der Dateizeichenfolge web.config connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString; // SqlConnection-Objekt erstellen SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // SQL-Abfrage zum Abrufen von Daten aus der Datenbankzeichenfolge sqlQuery = "SELECT TOP 10 ArticleID, Titel, Autor, Beschreibung, DatePublished FROM News ORDER BY DatePublished DESC"; // SqlCommand-Objekt erstellen SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // Verbindung öffnen und dann Daten in RepeaterRSS-Steuerelement einbinden sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close (); </pre> <p> Der obige Code versucht, die zehn neuesten Nachrichten aus Ihrer Datenbank abzurufen. Es bindet sie dann an a <code>Repeater</code> Steuerung (<code>RepeaterRSS</code>) wenn die Seite geladen ist.</p> <hr> <h2> Schritt 6: Rendern von Daten </h2> <p>Dies ist unser letzter Schritt. Es ist an der Zeit, Elemente aus dem zu rendern <code>Nachrichten</code> Tabelle in eine entsprechende RSS 2.0-Syndication-Datei. Die einfachste und schnellste Möglichkeit, die Datenbankdaten als XML anzuzeigen, besteht in der Verwendung von a <code>Repeater</code> Steuerung (<code>RepeaterRSS</code>). Insbesondere die <code>Repeater</code> wird das anzeigen <code><rss></code>, <code><channel></code>, und website-bezogene Element-Tags in seinem <code>HeaderTemplate</code> und <code>FooterTemplate</code> Vorlagen und die <code><item></code> Elemente in der <code>ItemTemplate</code> Vorlage. Vergiss nicht, den Helfer anzurufen <code>RemoveIllegalCharacters ()</code> Funktion, um unerwünschte Zeichen aus der String-Ausgabe zu ersetzen.</p> <p>Im Folgenden finden Sie den HTML-Teil unserer ASP.NET-Webseite (<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>Name der Website http://www.ihredomain.com Kurze Beschreibung der Website. <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %> http://www.ihredomain.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"))%>

    Das erste, was erwähnenswert ist, ist das rss.aspx Datei enthält nur die Repeater Steuerung (RepeaterRSS) und keine anderen HTML-Markups oder Web-Steuerelemente. Dies liegt daran, dass die Seite nur XML-Ausgaben ausgeben soll. Wir setzen die Inhaltstyp des @Seite Direktive an "text / xml" um anzuzeigen, dass die Ausgabe der rss.aspx Seite ist ein XML-Dokument.

    In dem HeaderTemplate Vorlage der Repeater Kontrolle legen wir die und Elemente.

    Als nächstes in der ItemTemplate, wir platzieren die Elemente, die das enthalten </code>, <code><link></code>, <code><author></code>, <code><pubDate></code>, und <code><description></code> Elemente als Ort für Datenbankfelder. Wir nennen das <code>RemoveIllegalCharacters ()</code> Funktion beim Hinzufügen der <code>Titel</code>, <code>Autor</code>, und <code>Beschreibung</code> Datenbankfelder an die <code>XML</code> Ausgabe. Denken Sie daran, dass diese Funktion einfach alle ungültigen XML-Zeichen durch ihre Entitätsverweise ersetzt.</p> <p>Endlich, das <code>Veröffentlichungsdatum</code> Datenbankfeld, in das eingegeben <code><pubDate></code> Element, wird mit der formatiert <code>String.Format</code> Methode. Der Standardformatbezeichner, <code>R</code>, formatiert die <code>Veröffentlichungsdatum</code> Wert entsprechend RFC 822, Datums- und Uhrzeitangabe. Dies beginnt mit einer optionalen Abkürzung für drei Buchstaben am Tag und einem Komma, gefolgt von einem erforderlichen Tag, dem abgekürzten Monat mit drei Buchstaben und dann dem Jahr, gefolgt von einer Zeit mit dem Namen der Zeitzone, z <code>Do 04 Nov 2010 20:50:26 GMT</code>.</p> <hr> <h2>Das Ergebnis </h2> <p>Und da haben wir es! Mit minimalem Aufwand haben wir einen benutzerdefinierten RSS-Feed für eine ASP.NET-Anwendung erstellt. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_3.jpg"> <hr> <h2>Der vollständige Code</h2> <h3>Die rss.aspx-Datei</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>Name der Website http://www.ihredomain.com Kurze Beschreibung der Website. <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %> http://www.ihredomain.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"))%>

    Die Datei rss.aspx.cs

     mit System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; Namespace NettutsTutorial2 öffentliche Teilklasse rss: System.Web.UI.Page protected void PageLoad (Objektsender, EventArgs e) // Abrufen der Verbindungszeichenfolge aus der web.config-Dateizeichenfolge connString = ConfigurationManager.ConnectionStrings ["ConnectionString"] ; // SqlConnection-Objekt erstellen SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // SQL-Abfrage zum Abrufen von Daten aus der Datenbankzeichenfolge sqlQuery = "SELECT TOP 10 ArticleID, Titel, Autor, Beschreibung, DatePublished FROM News ORDER BY DatePublished DESC"; // SqlCommand-Objekt erstellen SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // Verbindung öffnen und dann Daten in RepeaterRSS-Steuerelement einbinden sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close ();  protected string RemoveIllegalCharacters (Objekteingabe) // Umwandlung der Eingabe in eine Zeichenfolge Zeichenfolge data = input.ToString (); // Ersetzen Sie unzulässige Zeichen in XML-Dokumenten durch Entitätsreferenzen. data = data.Replace ("\" "," ""); data = data.Replace ("'", ")'"); data = data.Replace ("<", "<"); data = data.Replace(">","> "); Daten zurückgeben; 

    Die Web.config-Datei

          

    Fazit

    Das Erstellen eines RSS-Feeds mit ASP.NET ist ziemlich einfach, nicht wahr? Wir müssen nur die RSS 2.0-Spezifikation verstehen. Darüber hinaus mit .NET Repeater Kontrolle können wir Elemente aus einer Datenbank in das RSS-Dokument rendern. Die meisten Content-Management-Systeme verfügen standardmäßig über diese Funktion. Wenn Sie jedoch ein Entwickler sind und eine ASP.NET-Website von Grund auf neu erstellen, können Sie jetzt Ihren eigenen benutzerdefinierten Feed erstellen.

    Glückliche Kodierung!