0

当我尝试使用 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>  

我究竟做错了什么?这个错误的解决方案是什么?

4

1 回答 1

0

看来您对日期时间格式有一些问题,也许您可​​以使用 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直接解析它,而不使用Splitand Take

于 2014-03-29T22:57:51.257 回答