2011-05-16 138 views
1

我試圖將RSS源反序列化爲rssEntry對象的列表。使用RestSharp將XML CDATA反序列化爲字符串變量

var Client = new RestClient("url here"); 
Request = new RestRequest { RequestFormat DataFormat.Xml }; 
var response = Client.Execute<Channel>(Request); 
return response.Data.Item; 

這填補了一切,除了包含CDATA

Channel.cs內容

public class Channel 
{ 
    public string Title { get; set; } 
    public string Link { get; set; } 
    public string AtomLink { get; set; } 
    public string Description { get; set; } 
    public DateTime LastBuildDate { get; set; } 
    public string Generator { get; set; } 
    public string Language { get; set; } 
    public string UpdatePeriod { get; set; } 
    public int UpdateFrequency { get; set; } 
    public RssItems Item { get; set; } 
} 

Item.cs

public class Item 
{ 
     public string Title { get; set; } 
     public string Link { get; set; } 
     public string Comments { get; set; } 
     public DateTime PubDate { get; set; } 
     public string Creator { get; set; } 
     public string Category { get; set; } 
     public string Description { get; set; } 
     public string Content { get; set; } 
     public string Guid { get; set; } 
     public string CommentRss { get; set; } 
     public int SlashComments { get; set; } 
    } 

我願意用比RestSharp以外的東西,但我正在嘗試它,希望這將是一個很好的簡單的解決方案。

當前任何CDATA字段都返回爲空。

+0

這可能是RestSharp中的一個錯誤。如果您可以在Google羣組中提供示例XML和類別定義,那麼我也可以對http://groups.google.com/group/restsharp – 2011-05-16 20:52:22

+0

進行疑難解答,除非您將XML作爲請求正文發送,否則不需要指定requestformat (罕見) – 2011-05-16 20:53:23

+0

謝謝,我刪除了RequestFormat併發布到Google組。 – sclarson 2011-05-17 04:32:54

回答

0

問題是我讀了RSS feed中的xml,並且在items類內容中命名了這些變量。 rss feed中的實際項目元素是content:encoded。

更改此變量爲Encoded修復它,完全是我自己的錯。

public class Item 
{ 
     public string Title { get; set; } 
     public string Link { get; set; } 
     public string Comments { get; set; } 
     public DateTime PubDate { get; set; } 
     public string Creator { get; set; } 
     public string Category { get; set; } 
     public string Description { get; set; } 
     public string Encoded { get; set; } 
     public string Guid { get; set; } 
     public string CommentRss { get; set; } 
     public int SlashComments { get; set; } 
}