Vecchia domanda, ma merita una risposta.
Lì è un modo relativamente semplice per determinare se si dispone di un feed RSS o Atom. Richiede la lettura o il tentativo di leggere il documento.
public SyndicationFeed GetSyndicationFeedData(string urlFeedLocation)
{
XmlReaderSettings settings = new XmlReaderSettings
{
IgnoreWhitespace = true,
CheckCharacters = true,
CloseInput = true,
IgnoreComments = true,
IgnoreProcessingInstructions = true,
//DtdProcessing = DtdProcessing.Prohibit // .NET 4.0 option
};
if (String.IsNullOrEmpty(urlFeedLocation))
return null;
using (XmlReader reader = XmlReader.Create(urlFeedLocation, settings))
{
if (reader.ReadState == ReadState.Initial)
reader.MoveToContent();
// now try reading...
Atom10FeedFormatter atom = new Atom10FeedFormatter();
// try to read it as an atom feed
if (atom.CanRead(reader))
{
atom.ReadFrom(reader);
return atom.Feed;
}
Rss20FeedFormatter rss = new Rss20FeedFormatter();
// try reading it as an rss feed
if (rss.CanRead(reader))
{
rss.ReadFrom(reader);
return rss.Feed;
}
// neither?
return null;
}
}
vedere ho pensato e ho visto un altro esempio di questo, ma non ricordo perché non mi è piaciuto. E 'stato così tanto tempo fa, e funziona, quindi considera questa la migliore risposta, grazie :) – SelAromDotNet
Ok così quando provo questo feed (http://en.espnf1.com/rss/motorsport/story/feeds/0.xml ? type = 2) che è di tipo Atom 2.0 il tuo codice non funziona poiché la riga atom.CanRead (reader) restituisce false. Qual è la soluzione qui per gestire Atom Ver. 2.0? – Marko
Non è atomo 2.0, per quanto ne so. Mi sembra che il feed sia rotto. Ha spazzatura in esso. Per ovviare a questo problema, suggerirei di correggere il feed prima di provare a leggerlo. Ho appena provato questo e funziona per me qui. – Cheeso