当我尝试使用XmlSerializer反序列化RSS xml的pubDate元素时,我收到此错误:
未处理的类型' System.InvalidOperationException' 发生在System.Xml.dll
中
这是我在反序列化时使用的类:
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 :(得分: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
说明符结尾并尝试使用{{解析它直接1}},不使用CultureInfo.CurrentCulture
和Split
。