0

RSS xml の pubDate 要素を XmlSerializer を使用して逆シリアル化しようとすると、次のエラーが発生します。

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、フォーマットの指定子の終わりを追加して、 and を使用せずに直接解析してみてCultureInfo.CurrentCultureください。SplitTake

于 2014-03-29T22:57:51.257 に答える