Tutoriaux
Écrit par Administrator    Mardi, 27 Novembre 2007 05:41    PDF Imprimer Envoyer
Créer un Feed RSS avec XmlTextWriter
Tutoriaux - ASP / ASP.NET
Cet article vous explique comment générer à partir d'une table d'une base de données un fichier XML et plus particulièrement un fichier RSS, afin d'exposer par exemple l'actualité de votre site sous ce format. L'objet XmlTextWriter est particulièrement bien adapté dans cette situation. Ce script est à insérer dans la procédure page_load de votre document.
 

Nous utilisons une base de données Sql server 2000, et du XML. Nous aurons donc besoin d'importer en entête du document les espaces de noms suivants :

Imports System.Data.SqlClient
Imports System.Xml

L'objet XmlTextWriter utilisé dans ce script, permet de générer des élements XML à la volée : un fichier RSS étant un XML particulier, celui-ci est particulièrement adapté à la situation. Première chose créer l'entête du fichier RSS - L'objet XmlTextWriter n'est ici pas intialisé sur un fichier mais directement sur la réponse - page qui sera renvoyée par ASP.NET - Response.OutputStream.

 

Début du script :

        Dim rss As New XmlTextWriter(Response.OutputStream, System.Text.Encoding.UTF8)
        rss.WriteStartDocument()
        rss.WriteStartElement("rss")
        rss.WriteAttributeString("version", "2.0")
        rss.WriteStartElement("channel")

Ce qui donnera :

 <?xml version="1.0" encoding="utf-8" ?> 
   <rss version="2.0">
   <channel>

       
Les données utilisées sont ensuite renvoyées par l'intermédiaire d'une procédure stockée actus_rss. Nous utilisons un objet DataSqlReader pour les lire - Conn représentant la connexion ouverte sur notre base de données :

        Dim dr As SqlDataReader
        Dim oCom As SqlCommand
        oCom = New SqlCommand("actus_rss", conn)
        oCom.CommandType = Data.CommandType.StoredProcedure
        dr = oCom.ExecuteReader()

Le premier élément ajouté au feed, concerne l'entete du fichier RSS. Il est intégré à la boucle de lecture des données afin de récupérer quelques infos de notre table - ici le numéro de lettre ainsi que la date de la lettre.

 

        Dim i As Integer = 0
        While dr.Read()
            If i = 0 Then
                '--------- Premier élément intégré sous la section <channel>
                rss.WriteElementString("title", "Les actus - PcKULT.NET")
                rss.WriteElementString("link", "http://www.pckult.net")
                rss.WriteElementString("copyright", "Copyright 2002 - 2007 PcKULT.NET.")

            End If

            '----- Ajout des Item au fichier RSS
            rss.WriteStartElement("item")
            rss.WriteElementString("title", dr("titre_info"))
            rss.WriteElementString("description", dr("desc_info"))
            rss.WriteElementString("category", dr("new_cat"))
            rss.WriteElementString("link", "http://www.pckult.net/actus/" & dr("id_info") & ".html")
            rss.WriteElementString("pubDate", Format(dr("date_info"), "r"))
            rss.WriteEndElement()
            i += 1
        End While

        dr.Close()
        conn.Close()

Nous fermons ensuite les tag respectivement </channel> et </rss>, puis nous marquons la fin du document.

        rss.WriteEndElement()
        rss.WriteEndElement()
        rss.WriteEndDocument()

Le fichier rss est exposé puis fermé.

        rss.Flush()
        rss.Close()

Il suffit enfin de modifier l'entête de la page renvoyée vers le navigateur du client, afin que celui-ci comprenne qu'il s'agit d'un fichier XML :

        Response.ContentEncoding = System.Text.Encoding.UTF8
        Response.ContentType = "text/xml"
        Response.End()

 

Rétrolien(0)

Adresse URI pour un rétrolien sur cet article

Commentaires (0)

Flux RSS pour les commentaires

Ecrivez un commentaire

Réduire l'éditeur | Agrandir l'éditeur

busy
Mis à jour ( Lundi, 17 Mars 2008 15:01 )
 

Derniers ajout

Les plus lus