Десериализация XML CDATA в строковую переменную с помощью RestSharp - PullRequest
1 голос
/ 17 мая 2011

Я пытаюсь взять канал 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

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

1 Ответ

0 голосов
/ 18 мая 2011

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