2010年2月24日星期三18:56:04 GMT 00:00不起作用
2010年2月24日星期三18:56:04 GMT工作
因此,由于时区字段,它正在投掷.
作为一种解决方法,对于熟悉的提要,我会手动修复这些DateTime节点 – 通过捕获XmlException,将RSS加载到XmlDocument中,修复这些节点的值,创建一个新的XmlReader,然后从这个新的XmlReader对象返回格式化程序(代码不是示出).但是对于这种工作方法,我需要事先知道哪些节点导致异常.
- SyndicationFeedFormatter syndicationFeedFormatter = null;
- XmlReaderSettings settings = new XmlReaderSettings();
- using (XmlReader reader = XmlReader.Create(url,settings))
- {
- try
- {
- syndicationFeedFormatter = SyndicationFormatterFactory.CreateFeedFormatter(reader);
- syndicationFeedFormatter.ReadFrom(reader);
- }
- catch (XmlException xexp)
- {
- // fix those datetime nodes with exceptions and read again.
- }
- return syndicationFeedFormatter;
- }
RSS Feed:http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=test&cf=all&output=rss
例外情况:
XmlException Error in line 1 position
376. An error was encountered when parsing a DateTime value in the XML.
at
System.ServiceModel.Syndication.RSS20FeedFormatter.DateFromString(String
dateTimeString,XmlReader reader)
at
System.ServiceModel.Syndication.RSS20FeedFormatter.ReadXml(XmlReader
reader,SyndicationFeed result) at
System.ServiceModel.Syndication.RSS20FeedFormatter.ReadFrom(XmlReader
reader) at … cs:line 171
- <RSS version="2.0">
- <channel>
- ...
- <pubDate>Wed,24 Feb 2010 18:56:04 GMT+00:00</pubDate>
- <lastBuildDate>Wed,24 Feb 2010 18:56:04 GMT+00:00</lastBuildDate> <-----exception
- ...
- <item>
- ...
- <pubDate>Wed,24 Feb 2010 16:17:50 GMT+00:00</pubDate>
- <lastBuildDate>Wed,24 Feb 2010 18:56:04 GMT+00:00</lastBuildDate>
- </item>
- ...
- </channel>
- </RSS>
有没有更好的方法来实现这一目标?请帮忙.谢谢.
解决方法
- string xml;
- using (WebClient webClient = new WebClient())
- {
- xml = Encoding.UTF8.GetString(webClient.DownloadData(url));
- }
- xml = xml.Replace("+00:00","");
- byte[] bytes = System.Text.UTF8Encoding.ASCII.GetBytes(xml);
- XmlReader reader = XmlReader.Create(new MemoryStream(bytes));
- SyndicationFeed Feed = SyndicationFeed.Load(reader);