Comment construire un flux RSS avec ASP.NET

Au cours de ce didacticiel, nous verrons comment créer un flux RSS avec le framework ASP.NET. Avoir un flux RSS pour votre site est devenu une nécessité ces dernières années. Avec la mise à jour fréquente de blogs ou de sites d’information, et avec la grande quantité de blogs et de sites d’information disponibles, RSS permet aux lecteurs de suivre le contenu sans avoir à les visiter. Une fois ce didacticiel terminé, vous saurez comment créer un flux RSS avec ASP.NET et comment restituer des documents XML sur des pages Web ASP.NET..


Étape 0: Introduction à RSS 2.0

RSS est un format de syndication de contenu Web. Il signifie "Really Simple Syndication" et est écrit en XML. Tous les fichiers RSS doivent être conformes à la spécification XML 1.0 publiée par le World Wide Web Consortium (W3C). Avec RSS, il est possible de distribuer du contenu Web actualisé d’un site Web à des milliers d’autres à travers le monde. Pour simplifier le terme, RSS permet une navigation rapide pour les nouvelles et les mises à jour.

Les règles de syntaxe de RSS 2.0 sont assez simples, bien que strictes. Voici un simple document RSS:

    Le nom de votre site web http://www.votredomaine.com Tutoriel gratuit RSS  Premier article http://www.votredomaine.com/article.aspx?ID=1 La description du premier article.   Deuxième article http://www.votredomaine.com/article.aspx?ID=2 La description du deuxième article.   

La première ligne du document - la déclaration XML - définit la version XML et le codage de caractères utilisé dans le document. Dans ce cas, le document est conforme à la spécification 1.0 de XML et utilise le utf-8 jeu de caractères. La ligne suivante est la déclaration RSS, qui indique qu'il s'agit en fait d'un document RSS (plus précisément de la version 2.0 de RSS)..

La ligne suivante contient le élément. Cet élément est utilisé pour décrire le flux RSS. le L'élément a trois éléments enfants requis:

  • </code> - Définit le titre de la chaîne (par exemple, le nom de votre site Web)</li> <li> <code><link></code> - Définit le lien hypertexte vers le canal (par exemple, http://www.votredomaine.com)</li> <li> <code><description></code> - Décrit le canal (par exemple, tutoriel gratuit RSS)</li> </ul> <p> Chaque <code><channel></code> l'élément peut avoir un ou plusieurs <code><item></code> éléments. Chaque <code><item></code> élément définit un article ou une "histoire" dans le flux RSS.</p> <p> le <code><item></code> element nécessite trois éléments enfants:</p> <ul> <li> <code><title></code> - Définit le titre de l'élément (par exemple, Premier article)</li> <li> <code><link></code> - Définit le lien hypertexte vers l'élément (par exemple, http://www.votredomaine.com/article.aspx?ID=1).</li> <li> <code><description></code> - Décrit l'élément (par exemple, la description du premier article)</li> </ul> <p>Lorsqu'il est visualisé dans Firefox, le document RSS ci-dessus devrait ressembler à: </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet.jpg"> <hr> <h2> Étape 1: Commencer</h2> <p>Pour suivre ce didacticiel, imaginez que vous travaillez en tant que développeur Web et que vous construisez un site Web d'actualités sur lequel tous les articles sont stockés dans la base de données SQL Server de Microsoft. Plus précisément, les articles sont stockés dans une table appelée <code>Nouvelles</code>, qui contient les champs suivants:</p> <ul> <li> <strong>ArticleID</strong> - un champ entier de clé primaire auto-incrémenté identifiant de manière unique chaque article</li> <li> <strong>Titre</strong> - une <code>nvarchar (256)</code>, en précisant le titre de l'article</li> <li> <strong>Auteur</strong> - un<code>varchar (50)</code>, en spécifiant l'auteur de l'article</li> <li> <strong>La description</strong> - un<code>varchar (500)</code>, fournissant une description plus détaillée de l'article</li> <li> <strong>Date publiée</strong> - une <code>date / heure</code>, indiquant la date de publication de l'article</li> </ul> <p> Notez qu'il peut y avoir d'autres champs dans la <code>Nouvelles</code> tableau, mais ceux énumérés ci-dessus sont les seuls que nous sommes intéressés à utiliser - au moins aux fins d'un flux RSS.</p> <p>Nous allons utiliser Visual Studio pour terminer l'exemple. Si vous ne disposez pas de la version complète de VS, vous pouvez télécharger gratuitement la version Express..</p> <hr> <h2> Étape 2: création d'une page rss.aspx</h2> <p>Notre prochaine étape consiste à créer une page Web ASP.NET (<code>rss.aspx</code>) qui affichera une liste des dernières actualités sous forme de document RSS 2.0 correctement formaté. Dans <code>Explorateur de solution</code>, cliquez avec le bouton droit sur le nom du projet, puis cliquez sur <code>Ajoute un nouvel objet</code>. Dans cette boîte de dialogue, sous Modèles Visual Studio installés, cliquez sur <code>Formulaire Web</code>. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_2.jpg"> <p> dans le <code>prénom</code> zone, tapez un nom pour la nouvelle page Web (<code>rss.aspx</code>), puis cliquez sur <code>Ajouter</code>. La nouvelle page Web ASP.NET (<code>rss.aspx</code>) est créé et affiché en conséquence.</p> <p>Parce que nous voulons le <code>rss.aspx</code> page pour produire une sortie XML, la première chose à faire est de supprimer tout le balisage HTML ou les contrôles Web de la page, puis de définir le paramètre <code>ContentType</code> propriété de <code>@page</code> directive à "<code>text / xml</code>".</p> <p>Après avoir effacé tout le balisage HTML de <code>rss.aspx</code> page, ajouter un <code>Répétiteur</code> contrôler dans la page. Nous utiliserons le contrôle Repeater pour rendre le document RSS sur la page rss.aspx.</p> <p>Voici la vue source du <code>rss.aspx</code> page, après avoir apporté quelques modifications:</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> Étape 3: Configuration de la chaîne de connexion</h2> <p>Ensuite, nous voulons configurer la chaîne de connexion de la source de données, dans le <code>Web.config</code> fichier. En sauvegardant les informations de la chaîne de connexion, nous éviterons de devoir les coder en dur dans le fichier code-behind. Cela simplifie les choses si les informations de la chaîne de connexion changent à l'avenir. Placez-le dans le <code><connectionStrings></code> section sous <em>élément de configuration</em>, ainsi:</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>Nous accéderons à ces informations à partir du fichier code-behind ultérieurement lorsque nous voudrons récupérer des données de la base de données..</p> <hr> <h2> Étape 4: Suppression des caractères illégaux du document XML</h2> <p> Certains personnages ont une signification particulière dans <code>XML</code>. Si vous placez un personnage, tel que "<", 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>référence d'entité</code> (<).</p> <p> Il existe cinq références d'entités prédéfinies dans XML:</p> <table border="1" cellpadding="5" cellspacing="0"> <tr> <td> <</td> <td> <</td> <td> moins que</td> </tr> <tr> <td> ></td> <td> ></td> <td> plus grand que</td> </tr> <tr> <td> Et</td> <td> Et</td> <td> esperluette </td> </tr> <tr> <td> '</td> <td> '</td> <td> apostrophe</td> </tr> <tr> <td> "</td> <td> "</td> <td> Guillemet</td> </tr> </table> <p> Pour éviter que notre flux RSS ne génère une erreur, nous devons modifier tous les caractères illégaux d'un document RSS avec leurs références d'entité. Ajoutez le code suivant dans le fichier code-behind du <code>rss.aspx</code> page (<code>rss.aspx.cs</code>):</p> <pre name="code"> protected string RemoveIllegalCharacters (entrée d'objet) // transforme l'entrée en chaîne de caractères data = input.ToString (); // remplace les caractères illégaux dans les documents XML par leurs références d'entité data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Remplace ("<", "<"); data = data.Replace(">","> "); renvoyer les données; </pre> <p>le <code>RemoveIllegalCharacters ()</code> La fonction effectue quelques remplacements simples de chaîne, si nécessaire. Nous appellerons cette fonction du <code>rss.aspx</code> page sous peu.</p> <hr> <h2> Étape 5: Récupération des données de la base de données</h2> <p> Ajoutez le code suivant dans le <code>Page_Load</code> gestionnaire d'événements:</p> <pre name="code"> protected void Page_Load (expéditeur d'objet, EventArgs e) // Récupère la chaîne de connexion à partir du fichier web.config chaîne connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString; // Créer un objet SqlConnection SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // Requête SQL pour extraire des données de la chaîne de base de données sqlQuery = "SELECT TOP 10 ArticleID, Titre, Auteur, Description, DatePublished DE Nouvelles ORDER BY DatePublished DESC"; // Créer un objet SqlCommand SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // ouvre la connexion puis lie les données au contrôle RepeaterRSS sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close (); </pre> <p> Le code ci-dessus va tenter de récupérer les dix derniers articles de votre base de données. Il les liera ensuite à un <code>Répétiteur</code> contrôle (<code>RepeaterRSS</code>) quand la page est chargée.</p> <hr> <h2> Étape 6: Rendu des données </h2> <p>Ceci est notre dernière étape. Il est temps de rendre les éléments de la <code>Nouvelles</code> table dans un fichier de syndication RSS 2.0 approprié. Le moyen le plus simple et le plus rapide d’afficher les données de la base de données au format XML est d’utiliser un <code>Répétiteur</code> contrôle (<code>RepeaterRSS</code>). Plus précisément, le <code>Répétiteur</code> affichera le <code><rss></code>, <code><channel></code>, et balises d'éléments liés au site Web dans son <code>HeaderTemplate</code> et <code>FooterTemplate</code> les modèles et les <code><item></code> éléments dans le <code>ItemTemplate</code> modèle. N'oubliez pas d'appeler l'assistant <code>RemoveIllegalCharacters ()</code> fonction pour remplacer les caractères indésirables de la sortie de chaîne.</p> <p>Voici la partie HTML de notre page 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>Nom du site http://www.votredomaine.com Brève description du site. <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %> http://www.votredomaine.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 première chose à noter ici est que le rss.aspx Le fichier ci-dessus ne contient que le Répétiteur contrôle (RepeaterRSS) et aucun autre balisage HTML ou contrôle Web. En effet, nous souhaitons que la page n’émette que des sorties XML. Nous avons mis le ContentType du @Page directive à "text / xml" pour indiquer que la sortie du rss.aspx page est un document XML.

    dans le HeaderTemplate modèle de la Répétiteur contrôle, nous plaçons le et éléments.

    Ensuite, dans le ItemTemplate, nous plaçons le éléments, qui contiennent les </code>, <code><link></code>, <code><author></code>, <code><pubDate></code>, et <code><description></code> éléments, comme le lieu pour les champs de base de données. Nous appelons le <code>RemoveIllegalCharacters ()</code> fonction lors de l'ajout du <code>Titre</code>, <code>Auteur</code>, et <code>La description</code> champs de base de données au <code>XML</code> sortie. N'oubliez pas que cette fonction remplace simplement les caractères XML illégaux par leurs références d'entité..</p> <p>Finalement, le <code>Date publiée</code> champ de base de données, entré dans le <code><pubDate></code> élément, est formaté en utilisant le <code>String.Format</code> méthode. Le spécificateur de format standard, <code>R</code>, formate le <code>Date publiée</code> valeur appropriée selon RFC 822, Date and Time Specification. Cela commence par une abréviation facultative de trois lettres et une virgule, suivies du jour requis, du mois abrégé en trois lettres, puis de l'année, suivies d'une heure avec le nom du fuseau horaire, tel que <code>Jeu., 04 nov. 2010 20:50:26 GMT</code>.</p> <hr> <h2>Le résultat </h2> <p>Et là nous l'avons! Avec un minimum d'effort, nous avons créé un flux RSS personnalisé pour une application ASP.NET.. </p> <img src="//accentsconagua.com/img/images_27/how-to-build-an-rss-feed-with-aspnet_3.jpg"> <hr> <h2>Le code complet</h2> <h3>Le fichier 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>Nom du site http://www.votredomaine.com Brève description du site. <%# RemoveIllegalCharacters(DataBinder.Eval(Container.DataItem, "Title")) %> http://www.votredomaine.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"))%>

    Le fichier rss.aspx.cs

     en utilisant le système; 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 classe partielle publique rss: System.Web.UI.Page protégé void Page_Load (objet expéditeur, EventArgs e) // Récupère une chaîne de connexion à partir du fichier web.config connString = ConfigurationManager.ConnectionStrings ["ConnectionString"]. ConnectionString ; // Créer un objet SqlConnection SqlConnection sqlConn = new SqlConnection (); sqlConn.ConnectionString = connString; // Requête SQL pour extraire des données de la chaîne de base de données sqlQuery = "SELECT TOP 10 ArticleID, Titre, Auteur, Description, DatePublished DE Nouvelles ORDER BY DatePublished DESC"; // Créer un objet SqlCommand SqlCommand cmd = new SqlCommand (); cmd.Connection = sqlConn; cmd.CommandType = CommandType.Text; cmd.CommandText = sqlQuery; // ouvre la connexion puis lie les données au contrôle RepeaterRSS sqlConn.Open (); RepeaterRSS.DataSource = cmd.ExecuteReader (); RepeaterRSS.DataBind (); sqlConn.Close ();  protected string RemoveIllegalCharacters (entrée d'objet) // transforme l'entrée en chaîne de caractères data = input.ToString (); // remplace les caractères illégaux dans les documents XML par leurs références d'entité data = data.Replace ("&", "&"); data = data.Replace ("\" "," ""); data = data.Replace ("'", "'"); data = data.Remplace ("<", "<"); data = data.Replace(">","> "); renvoyer les données; 

    Le fichier Web.config

          

    Conclusion

    Créer un flux RSS avec ASP.NET est assez simple, n'est-ce pas? Nous devons seulement comprendre la spécification RSS 2.0. Au-delà, en utilisant le .NET Répétiteur Contrôle, nous pouvons rendre les éléments d'une base de données dans le document RSS. La plupart des systèmes de gestion de contenu auront cette capacité par défaut. Toutefois, si vous êtes développeur et que vous créez un site Web ASP.NET à partir de rien, vous avez maintenant les compétences nécessaires pour créer votre propre flux personnalisé..

    Code heureux!