Magazine Internet

Ecrire un flux RSS avec XLinq et DLinq

Publié le 02 septembre 2008 par Jeremy.jeanson

Voici une méthode permetant d'écrire un flux RSS à partir de Linq to XML et Linq to SQL. Les données proviennent d'une source Linq to SQL dont voici le schéma :

exemple_linq

Et Voici le code C# :

/// <summary>
/// Description résumée de Rss
/// </summary>
public class Feeds
{
/// <summary>
/// Ecriture du flux RSS
/// </summary>
public static void Write()
{
String path = HttpContext.Current.Server.MapPath("...path.../blog.rss"); // Avec path : chemin du flux
String url = String.Concat("...path.../fichier.aspx?id="); // Avec path et fichier pour désigner le fichier qui permetra d'avoir un lien vers la page du post
XDocument document = new XDocument(
new XDeclaration("1.0", "utf-8", null),
new XElement("rss",
new XElement("channel",
new XElement("title", "Nom du site"),
new XElement("link", "Url du site"),
new XElement("pubDate", Date2RFC822(DateTime.Now)),
new XElement("lastBuildDate", Date2RFC822(DateTime.Now)),
from p in new DataContext().Post.OrderByDescending(c => c.date_edition).Take(10)
select new XElement("item",
new XElement("guid", p.id_post.ToString()),
new XElement("pubDate", Date2RFC822(p.date_edition)),
new XElement("title", p.titre),
new XElement("description", p.texte),
new XElement("link", String.Concat(url, p.id_post.ToString()))
)
)
,
new XAttribute("version", "2.0"))
);
//Stream d'écriture du fichier
System.IO.TextWriter writer = new System.IO.StreamWriter(path, false, Encoding.Default);
document.Save(writer);
writer.Flush();
writer.Close();
}
/// <summary>
/// Formatage de date
/// </summary>
/// <param name="date"></param>
/// <returns></returns>
private static String Date2RFC822(DateTime date)
{
Int32 offset = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Hours;
StringBuilder sb = new StringBuilder();
sb.Append(date.ToString("ddd, dd MMM yyyy HH:mm:ss "));
if (offset < 0)
{
sb.AppendFormat("-{0:00}00", offset * -1);
}
else if (offset == 0)
{
sb.Append("GMT");
}
else
{
sb.AppendFormat("+{0:00}00", offset);
}
return sb.ToString();
}
}

Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

A propos de l’auteur


Jeremy.jeanson 1573 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazine