2010-03-10 16 views
12

Wie würden Sie einen RSS-Feed in ASP.NET 3.5 mit C# erstellen?Erstellen eines RSS-Feeds in ASP.NET 3.5

Welche Frameworks würden dabei helfen, die Veröffentlichung eines RSS- oder Atom-Feeds für .NET-Entwickler zu vereinfachen?

Gibt es zusätzliche Funktionen in .NET 4, um diese Aufgabe einfacher als in 3.5 zu machen?

+0

Vage Frage, ich hoffe, Sie können etwas mit meiner Antwort tun. – Younes

Antwort

13

Es gibt einen neuen Namespace für diese in 3.5 System.ServiceModel.Syndication.

Kevin Miller has a great writeup on this, nicht eine ganze Menge auch mit dem neuen Namespace, lesen Sie den Artikel, keine Notwendigkeit, hier erneut zu veröffentlichen, Beispielcode ist meiner Meinung nach viel einfacher zu betrachten.

+0

Ich habe den Kevin Miller Link durch einen funktionierenden ersetzt –

+0

Bitte denken Sie daran, diese Antwort zu verwenden, um die relevanten Teile darin aufzunehmen. –

-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(); 
}