2014-03-29 43 views
0

當我嘗試反序列化的RSS XML的pubdate的元素,使用XmlSerializer的一個RSS XML源的pubdate的元素時,我得到這個錯誤:錯誤反序列化使用XmlSerializer的

An unhandled exception of type 'System.InvalidOperationException' occured in System.Xml.dll

這是I類反序列化使用:

public class RssItem 
{ 
    [XmlElement("title")] 
    public string Title { get; set; } 

    [XmlElement("description")] 
    public string Description { get; set; } 

    [XmlElement("pubDate")] 
    public DateTime Date { get; set; } 

    [XmlElement("link")] 
    public string Link { get; set; } 
} 

和pubdate的元素具有以下格式:

<pubDate>Sat, 29 Mar 2014 19:27:18 EDT</pubDate> 

我究竟做錯了什麼?這個錯誤的解決方案是什麼?

回答

0

看來你有一些麻煩的日期時間格式也許你可以使用數據類型和DisplayFormat屬性修復它,但我會用LINQ to XML代替:

var rssItems = XDocument.Load("path or URL") 
       .Descendants("item") 
       .Select(x => new RssItem 
       { 
        Title = (string) x.Element("title"), 
        Description = (string) x.Element("description"), 
        Date = DateTime.ParseExact(string.Join(" ",x.Element("pubDate").Value.Split().Take(5)), "ddd, dd MMM yyyy HH:mm:ss", CultureInfo.InvariantCulture), 
        Link = (string) x.Element("link") 
       }).ToList(); 

我做你的Date字符串一些操作,因爲我不能不能在我的機器上正確解析它。也可以添加格式的K說明符末尾,並嘗試直接使用CultureInfo.CurrentCulture解析它,而不使用SplitTake