2009-07-13 9 views
8

I ’ m Verwendung der SyndicationFeed Klasse, um einige RSS-Feeds zu verbrauchen. Ich frage mich, wie man den content:encoded Knoten eines RSS-Feeds bekommt. Dies ist der Code, den ich verwende ’:SyndicationFeed Inhalt: codiert

XmlReader reader = XmlReader.Create(response.GetResponseStream()); 

SyndicationFeed feed = SyndicationFeed.Load(reader); 

foreach (SyndicationItem item in feed.Items) 
{ 
    string title = (item.Title != null) ? item.Title.Text : String.Empty; 

    string content = ?? 

    string pubDate = (item.PublishDate != null) ? item.PublishDate.ToString("r") : String.Empty; 

} 

kann ich item.Summary.Text verwenden, aber das scheint die Description Knoten zurückzukehren, die nur eine kurze Zusammenfassung sein kann, während content:encoded den gesamten Inhalt haben. Dort ’ s eine Option für item.content, aber ich bin mir nicht sicher, wie man es benutzt und Dokumentation ist knapp.

Antwort

21

Try this:

StringBuilder sb = new StringBuilder(); 
foreach (SyndicationElementExtension extension in item.ElementExtensions) 
    { 
     XElement ele = extension.GetObject<XElement>(); 
     if (ele.Name.LocalName == "encoded" && ele.Name.Namespace.ToString().Contains("content")) 
     { 
       sb.Append(ele.Value + "<br/>"); 
     } 
    } 
+1

Passen Sie die HTML-Injektion in diesem Beitrag ... Noch eine nützliche Antwort. – usr

+0

ja, hat super funktioniert. wieder, nicht sicher, warum die
hinzugefügt werden muss, aber ich denke, es kann als ein Beispiel für die Art dienen –