Я пытаюсь проанализировать Rss2, использование Atom-лент объекты SyndicationFeed и SyndicationFeedFormatter. Но я получаю XmlExceptions при парсинге поля DateTime как pubDate и/или lastBuildDate.
Среда, 24 февраля 2010 18:56:04 GMT+00:00 не работает
Среда, 24 февраля 2010 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 лента: http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=test&cf=all&output=rss
исключение detials:
Ошибка XmlException в строке 1 положение 376. С ошибкой встретились при парсинге значения DateTime в XML.
в System. ServiceModel. Синдикация. Rss20FeedFormatter. DateFromString (Представляют в виде строки dateTimeString, читателя XmlReader),
в System. ServiceModel. Синдикация. Rss20FeedFormatter. ReadXml (читатель XmlReader, результат SyndicationFeed) в System. ServiceModel. Синдикация. Rss20FeedFormatter. ReadFrom (читатель XmlReader) в... cs:line 171
...
Wed, 24 Feb 2010 18:56:04 GMT+00:00
Wed, 24 Feb 2010 18:56:04 GMT+00:00 <-----exception
...
-
...
Wed, 24 Feb 2010 16:17:50 GMT+00:00
Wed, 24 Feb 2010 18:56:04 GMT+00:00
...
Существует ли лучший способ достигнуть этого? Помогите.Спасибо.