繁体   English   中英

使用XmlSerializer反序列化RSS xml提要的pubDate元素时的错误

[英]The error when deserializing the pubDate element of an RSS xml feed using XmlSerializer

当我尝试使用XmlSerializer反序列化RSS xml的pubDate元素时,出现以下错误:

System.Xml.dll中发生了类型为'System.InvalidOperationException'的未处理异常

这是我反序列化时使用的类:

    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>  

我究竟做错了什么? 该错误的解决方法是什么?

看来您在使用日期时间格式时遇到了麻烦,也许可以使用DataType和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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM