2009-07-13 5 views
8

Tôi ’ m bằng cách sử dụng lớp SyndicationFeed để tiêu thụ một số nguồn cấp dữ liệu rss. Tôi tự hỏi làm thế nào để có được các nút content:encoded của một nguồn cấp dữ liệu RSS. Đây là mã tôi ’ đang sử dụng:Phân phối Nội dung chi tiết: được mã hóa

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; 

} 

tôi có thể sử dụng item.Summary.Text nhưng điều đó dường như để trả lại Description nút, mà có thể chỉ là một bản tóm tắt ngắn, trong khi content:encoded sẽ có nội dung đầy đủ. Có ’ s một tùy chọn cho item.content, nhưng tôi không chắc chắn làm thế nào để sử dụng nó và tài liệu là khan hiếm.

Trả lời

21

Hãy thử điều này:

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

Hãy coi chừng tiêm HTML trong bài này ... Vẫn là một câu trả lời hữu ích. – usr

+0

vâng, đã làm việc tuyệt vời. một lần nữa, không chắc chắn tại sao cần phải thêm
, nhưng tôi đoán nó có thể phục vụ như một ví dụ về các loại –