![](/img/trans.png)
[英]Root Element Missing when deserializing an XML response using XmlSerializer
[英]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
对其进行解析,而无需使用Split
和Take
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.