質問
これは奇妙かもしれませんが、時系列で読みたいブログに出会ったことがありますか?そして、そのブログは古く、数百の投稿があるかもしれません。このフィードをフィードリーダー(googlereaderなど)に追加すると、最新のフィードが先頭に表示され、さらに下にスクロールすると古い投稿が表示されます。最初から読みたい場合、これはイライラする可能性があります。これを行う読者はいますか?または、私はこれをペットプロジェクトとして(できればc#で)行いたいと思っています。また、RSSフィードで作業するために使用できる.NETライブラリはありますか? RSSフィードのプログラミングを行ったことはありません。
編集これに技術的な制限があるかどうか知りたい。これは、プログラムで取り組むことができると思った、私が遭遇した興味深い問題の1つでした。
解決
これを行うために独自のC#アプリケーションをロールすることにした場合、.NET Frameworkの現在のバージョンでは非常に簡単です。
System.ServiceModel.Syndication 名前空間。 RSSおよびAtomフィードに関連するクラスがあります。これらのクラスを使用してデータベースからフィードを生成し、フィード項目にジオコードを追加するコードを最近作成しました。フィード内のアイテムの順序を逆にする必要がある場合と同じ問題が発生しました。データベースクエリがユーザーに表示したい逆の順序でそれらを返したためです。
私がしたことは、単にフィードをディスクに書き込む直前まで、独自のList<SyndicationItem>
データ構造のフィードのSyndicationItem オブジェクト。それから私はこのようなことをします:
private SyndicationFeed m_feed;
private List<SyndicationItem> m_items;
...snip...
m_items.Reverse();
m_feed.Items = m_items;
他のヒント
Googleリーダーでは、フィードを読んでいるときに、<!> quot;フィード設定... <!> quot;があります。オプション付きメニュー:<!> quot;新しい順にソート<!> quot;、<!> quot;古い順にソート<!> quot;。
フォルダには、メニューの下に同じオプションがあります<!> quot;フォルダ設定... <!> quot;
プログラミングは不要です。
これには問題があるかもしれません。多くのRSSフィードは最新の10件程度の投稿のみを保持しているため、ブログの開始以降、フィードから古いデータを提供する方法はありません。
Googleリーダーでは、フォルダー(フィード)内のアイテムを最新から最古、または最古から最新のいずれかで表示することができます。これを行うには、フィードを選択し、<!> quot;フィード設定<!> quotを選択します。ドロップダウンして、<!> quot;最も古い順にソート<!> quot;を選択します。 Googleリーダーがどれくらい前まで遡ったのかはわかりませんが、おそらくフィードの監視を最初に開始してからずっとずっとです。
これはどの言語でも非常に簡単です...フィードxmlをDOM構造に読み込むだけです(C#を含むほとんどすべての言語にはDomDocumentクラスがあります)
その後、単純にアイテムノードを逆の順序でループできるようになります...
参照: http://msdn.microsoft。 com / en-us / library / ms756177(VS.85).aspx
他の人が言ったように、rssフィードによっては、限られた量のアイテムしか取得できない場合があります。