2010-03-10 6 views
12

Comment créer un flux RSS dans ASP.NET 3.5 en utilisant C#? Quels éléments du framework aideraient à rendre la publication d'un flux RSS ou Atom plus facile pour le développeur .NET?Création d'un flux RSS dans ASP.NET 3.5

Y at-il des fonctionnalités supplémentaires dans .NET 4 pour faciliter cette tâche que dans 3.5?

+0

Vague question, j'espère que vous pouvez faire quelque chose avec ma réponse. – Younes

Répondre

13

Il y a un nouvel espace de noms pour cela en 3.5 appelé System.ServiceModel.Syndication.

Kevin Miller has a great writeup on this, pas beaucoup aussi avec le nouvel espace de noms, consultez l'article, pas besoin de republier ici, exemple de code est beaucoup plus facile à regarder à mon avis.

+0

J'ai remplacé le lien de Kevin Miller par un lien de travail –

+0

S'il vous plaît envisager d'étendre cette réponse pour y inclure les parties pertinentes. –

-1
public void BindData() 
{      

    StringWriter sw = new StringWriter(); 
    XmlTextWriter writer = new XmlTextWriter(sw); 
    XmlDocument doc = new XmlDocument(); 
    XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null); 

    writer.WriteStartElement("feed"); 
    writer.WriteAttributeString("xmlns", "http://www.w3.org/2005/Atom"); 
    writer.WriteString("\n"); 
    writer.WriteElementString("title", this.TTT + " - " + this.Title); 
    writer.WriteString("\n"); 


    writer.WriteStartElement("link"); 
    writer.WriteAttributeString("href", this.Url); 
    writer.WriteEndElement(); 

    writer.WriteElementString("id", "urn:uuid:" + Guid.NewGuid().ToString());    
    writer.WriteElementString("updated", DateTime.UtcNow.ToString("o")); 


    foreach (var item in this.lista) 
    { 
     writer.WriteStartElement("entry"); 
     writer.WriteElementString("title", item.Value.Title); 

     writer.WriteStartElement("link"); 
     writer.WriteAttributeString("href", item.Key); 
     writer.WriteEndElement(); 

     writer.WriteElementString("id", item.Key); 
     string slikaImgUrl = item.Value.Imaga; 

     if (string.IsNullOrEmpty(slikaImgUrl) == false) 
     { 
      writer.WriteStartElement("link"); 
      writer.WriteAttributeString("rel", "enclosure"); 
      writer.WriteAttributeString("type", "image/jpeg"); 
      writer.WriteAttributeString("href", slikaImgUrl); 
      writer.WriteEndElement(); 
     } 

     writer.WriteStartElement("author"); 
     writer.WriteElementString("name", this.Title); 
     writer.WriteEndElement(); 

     writer.WriteStartElement("summary"); 
     writer.WriteAttributeString("type", "text"); 
     writer.WriteCData(" "); 
     writer.WriteEndElement();    

     writer.WriteElementString("updated", DateTime.UtcNow.ToString("o")); 
     writer.WriteElementString("published", DateTime.UtcNow.ToString("o")); 
     writer.WriteEndElement(); 
     writer.WriteString("\n");     
    } 

    writer.WriteEndElement(); 
    string dataOut = sw.ToString(); 


    Response.Clear(); 
    Response.ContentType = "text/xml"; 

    Response.Write(dataOut); 
    writer.Close(); 
    Response.End(); 
}