2009-07-13 17 views
8

I ’ m utilizzando la classe SyndicationFeed per consumare alcuni feed rss. Mi chiedo come ottenere il nodo content:encoded di un feed RSS. Questo è il codice che ’ sto usando:SyndicationFeed content: codificato

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; 

} 

posso usare item.Summary.Text ma che sembra tornare il nodo Description, che può essere solo un breve riassunto, mentre content:encoded avrà l'intero contenuto. Lì ’ s un'opzione per item.content, ma non sono sicuro di come utilizzarlo e la documentazione è scarsa.

risposta

21

Prova questo:

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

Attenzione l'iniezione HTML in questo post ... Ancora una soluzione utile. – usr

+0

sì, ha funzionato alla grande. di nuovo, non sono sicuro del motivo per cui è necessario aggiungere
, ma suppongo che possa servire da esempio –

Problemi correlati