使用RestSharp将XML CDATA反序列化为字符串变量

问题描述:

我试图将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

问题是我读了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; } 
}