Десериализация XML CDATA в строковую переменную с помощью RestSharp

Я пытаюсь взять RSS-канал и десериализовать его в список объектов rssEntry.

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

Это заполняет все, кроме контента, который содержит CDATA

Канал.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 возвращается как пустое.


person sclarson    schedule 16.05.2011    source источник
comment
это может быть ошибка в RestSharp. если вы можете предоставить образцы XML и определения классов в группе Google, я могу устранить неполадки groups.google.com/group/   -  person John Sheehan    schedule 17.05.2011
comment
также вам не нужно указывать формат запроса, если вы не отправляете XML в качестве тела запроса (редко)   -  person John Sheehan    schedule 17.05.2011
comment
Спасибо, я удалил RequestFormat и отправил сообщение в группу Google.   -  person sclarson    schedule 17.05.2011
comment
Моя переменная с именем content будет соответствовать чему-то в rss, что является ‹content:encoded›, которое превращается в ‹encoded›, поэтому содержимое не совпадет во время десериализации. Не было проблем с restsharp, просто мое имя.   -  person sclarson    schedule 17.05.2011


Ответы (1)


Проблема заключалась в том, что я прочитал xml в RSS-канале и назвал переменные в содержимом класса элементов. Фактический элемент элемента в rss-канале был 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; }
}
person sclarson    schedule 17.05.2011