2011-05-16 5 views
1

RSS 피드를 rssEntry 개체 목록으로 역 직렬화하려고합니다.XML CDATA를 RestSharp를 사용하여 문자열 변수로 비 직렬화

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가있는 모든 필드는 null로 반환됩니다.

+0

RestSharp의 버그 일 수 있습니다. http://groups.google.com/group/restsharp –

+0

문제를 해결할 수있는 Google 그룹에서 샘플 XML 및 클래스 정의를 제공 할 수있는 경우 XML을 요청 본문으로 보내지 않는 한 requestformat을 지정할 필요가 없습니다. (rare) –

+0

감사합니다. RequestFormat을 제거하고 Google 그룹에 게시했습니다. – sclarson

답변

0

문제는 RSS 피드의 xml을 읽고 항목 클래스 콘텐츠의 변수 이름을 지정했기 때문입니다. RSS 피드의 실제 항목 요소는 콘텐츠 : 인코딩되었습니다.

이 변수를 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; } 
}