2008-09-25 11 views
1

Cela pourrait être bizarre, Avez-vous déjà rencontré un blog que vous vouliez lire dans l'ordre chronologique? Et ce blog pourrait être vieux, avec plusieurs centaines de messages. Lorsque j'ajoute ce flux à mon lecteur de flux, disons googlereader, le dernier flux arrive en tête et, au fur et à mesure que je défile vers le bas, les anciens posts apparaissent. Cela pourrait être frustrant si vous voulez le lire depuis le début. Y a-t-il un lecteur qui fait cela? Ou, j'aimerais faire cela comme un projet de compagnie, (de préférence en C#), comment exactement devrais-je y aller? De même, existe-t-il des bibliothèques .NET que je peux utiliser pour travailler sur les flux RSS? Je n'ai pas fait de programmation de flux RSS avant.Inverser un flux RSS

EDIT Je voudrais savoir s'il y a des limites techniques à cela. C'était un problème intéressant que j'ai rencontré que je pensais pourrait être abordé par programme.

Répondre

2

Si vous décidez de lancer votre propre application C# pour ce faire, c'est très simple dans la version actuelle de .NET Framework.

Recherchez l'espace de noms System.ServiceModel.Syndication. Cela a des classes liées aux flux RSS et Atom. J'ai récemment écrit du code qui génère un flux à partir d'une base de données en utilisant ces classes, et ajoute des géocodes aux éléments de flux. J'ai eu le même problème où j'ai dû inverser l'ordre des éléments dans le flux, car ma requête de base de données les renvoyait dans l'ordre inverse que je voulais voir mes utilisateurs. Ce que j'ai fait était simplement de maintenir la liste des objets SyndicationItem pour le flux dans ma propre structure de données List<SyndicationItem> jusqu'à ce que je devais écrire le flux sur le disque. Alors je ferais quelque chose comme ceci:

private SyndicationFeed m_feed; 
private List<SyndicationItem> m_items; 

...snip... 

m_items.Reverse(); 
m_feed.Items = m_items; 
2

Dans Google Reader, lorsque vous lisez un flux, il existe un menu "Paramètres d'alimentation ..." avec les options: "Trier par plus récent", "Trier par plus ancien".

dossiers ont les mêmes options dans le menu "Paramètres du dossier ..."

Aucune programmation requise.

+0

Les articles les plus anciens ne contiennent que des éléments des 30 derniers jours. Pas beaucoup d'aide – ashwnacharya

+0

Vous allez être limité par ce que le flux lance réellement. Tous les flux ne présentent pas tous les posts historiques. En fait, ce serait une idée terrible. –

2

Je pense que vous pourriez avoir des problèmes avec cela. De nombreux flux RSS ne conservent que les 10 derniers posts, il n'y aurait donc aucun moyen de fournir les anciennes données du flux depuis le début du blog.

+0

Google Reader me chercherait tous les messages si j'avais attendu assez longtemps.Mon seul problème est avec l'ordre dans lequel il va chercher. – ashwnacharya

+0

Google lecteur ne peut pas récupérer tous les messages si un flux RSS ne les fournit pas. La norme utilisée pour être seulement 10 éléments dans un flux RSS, je ne sais pas si quelqu'un suit ou plus, cependant. – y0mbo

0

Cela devrait être assez facile avec une langue ... tout ce que vous devez faire est de lire le code XML d'alimentation dans une structure DOM (presque tous languauges y compris # C ont une classe DomDocument)

Vous devriez alors être en mesure simplement boucle à travers les nœuds d'éléments dans l'ordre inverse ...

voir: http://msdn.microsoft.com/en-us/library/ms756177(VS.85).aspx

Comme autre dit, en fonction du flux RSS, vous ne pouvez obtenir une quantité limitée d'articles.

+0

Bien que cette URL n'était pas assez spécifique pour être utile dans la réponse à cette question, c'est une bonne source de référence pour HTML, DHTML et DOM. Alors je dis "Merci!" @mmattax pour ça. –

1

Dans Google Reader, vous pouvez afficher les éléments d'un dossier (fil) du plus récent au plus ancien ou du plus ancien au plus récent. Pour ce faire, sélectionnez le flux, sélectionnez la liste déroulante "Paramètres d'alimentation" et sélectionnez "Trier par le plus ancien". Je ne suis pas sûr de la distance parcourue par Google Reader, mais probablement depuis le début de la surveillance du flux.

+0

Non .. Seuls les messages des 30 derniers jours – ashwnacharya

+0

Ah - Je ne le savais pas. Google Reader lui donnerait un peu d'histoire au moins. Je ne sais pas vraiment quelles sont les autres options possibles. – Andy