【jQuery】RSS(XML)の中身を表示してみよう
2015.05.29 14:00 | コメント(0) | 技術
この記事は最終更新日から1年以上が経過しています。
どうも、フットサルしてもパスをいただけないさつきさんです。
よく走るよ!
はい、今回はjQueryでXMLファイルを取得して、中身を取り出し見ようという企画。
XPath使えればいいのになあ、と思ってたら案の定ライブラリがありました。
興味のある方は公式ページへどうぞ。
今回私がやった方法はXPathを使用していません。
使ったほうがスマートに書けるなあ。
書いてるうちに誰向けの記事かわからなくなりました。
たぶん初級~中級くらいかな。
※PCでの閲覧推奨です。
最後にFC2ブログの「最新記事」プラグイン用のサンプルコードも記述しています。
よろしければ参考にしてください。
XMLファイルを読み込む
XMLファイルの読込にはAjaxを使用します。$.ajax({
url: 'https://megasatsuki.blog.fc2.com/?xml',
type: 'get',
dataType: 'xml',
timeout: 5000,
success: function(xml, status) {
/* ここに取得したXMLを加工する処理を記述 */
}
最低限のオプションしかつけてません。.ajaxのオプションについては、このへんを参考にしてください。
XMLファイルから必要な情報を取得する
上の方法でXMLが取得出来たら、あとは欲しい情報を探すだけですね。当ブログのRSSはこんな感じです。
※なっがいので今回欲しい部分だけ抜き取って表示してます。
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="https://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="https://purl.org/rss/1.0/"
xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/"
xmlns:cc="https://web.resource.org/cc/" xml:lang="ja">
<channel rdf:about="https://www.satsukisan.net/rss.xml">
(略)
</channel>
<item rdf:about="https://www.satsukisan.net/articles/159">
<link>https://www.satsukisan.net/articles/159</link>
<title>【DQMSL】プレイ37日目 新みんぼうイベント&闘技炊き出し開始</title>
<description> ひとぼうやることなしどうもエンペランさつきです。まおたまください。月曜にタマゴロンの隠れ家が終わり、ようやく何かイベントが来る・・・かと思いきやひとりでぼうけんには限定クエスト追加無し!今週も究極回すしかないのか・・・。さて、そんななか昨日らいなまが開催されましたね。今回はその内容のまとめと、みんなで冒険新イベントについて書いていきます。
</description>
<content:encoded>
<![CDATA[ <strong style="font-size:150%;">ひとぼうやることなし</strong><br /><br />どうもエンペランさつきです。<br />まおたまください。<br /><br />月曜に<strong>タマゴロンの隠れ家</strong>が終わり、ようやく何かイベントが来る・・・<br />かと思いきやひとりでぼうけんには限定クエスト追加無し!<br />今週も究極回すしかないのか・・・。<br /><br />さて、そんななか昨日<strong>らいなま</strong>が開催されましたね。<br />今回はその内容のまとめと、みんなで冒険新イベントについて書いていきます。 ]]>
</content:encoded>
<dc:subject>DQMSL</dc:subject>
<dc:date>2015-05-27T12:00:00+09:00</dc:date>
<dc:creator>さつきさん</dc:creator>
<dc:publisher>FC2-BLOG</dc:publisher>
</item>
(略)
</rdf:RDF>
ちょっとわかりづらいかなw
HTMLのお勉強をした方なら、少し違和感を持ち、少し親近感を覚えると思います。
XMLも結局はマークアップ言語なので、記述方法は似てますね。
上記方法で取得すると、パースされた状態で内容が返ってくるので、jQueryでのDOM操作も容易です。
んで、例えばこの中の<item>を取得したい!
という場合。
$.ajax({
url: 'https://megasatsuki.blog.fc2.com/?xml',
type: 'get',
dataType: 'xml',
timeout: 5000,
success: function(xml, status) {
if ( status != 'success' ) return;
$(xml).find('item').each(function() {
/* 例えばリンクを取得する場合 */
var link = $(this).find('link').first();
})
}
})
通常のHTMLを操作する時と同様に扱うことができます。
ちなみに
Googleさんがこんな便利なプラグインを作ってくれてたりします。単純にRSSフィードの取得だけが目的ならこっちのほうがお手軽ですねー。
RSSから最新記事一覧を作ってみた
FC2ブログ用の「最新記事」プラグインを作ってみました。今PC版で左側に表示している「最新記事」みたいな形で出てきます。
使う人はいないだろうけど、ご自由にどうぞ。
こんな仕様
- カテゴリごとに分けて表示
- カテゴリ表示順は投稿日付降順
- カテゴリ内記事の表示順は投稿日付降順
- 最新の記事のみ、投稿日時から24時間の間「New!」マークがつく
作った理由
もともとFC2公式から提供されている「最新記事」プラグインは最新5件の記事タイトルとリンク先のみを取得し、
登録しているカテゴリ情報などは一切取得できなかった。
さらに、別のFC2が提供する変数で最新記事を取得しようとすると、
記事詳細ページでは所属しているカテゴリ内の最新記事が表示されてしまうため。
サンプルソース
長いので畳んでおきますね。ソースを見るソースをたたむ ソースをたたむ
今回は以上となりむぁす!
むんむん!
- 技術の記事
-
- 【jQuery】ガチャ確率計算機作ってみた
- 【ブログ機能】コメント欄の機能について思うこと
- 【jQuery】RSS(XML)の中身を表示してみよう
- 【Rails】外部からPOSTされてくるデータの扱いについて
- 【HTML】外部サイトへPOSTする際の注意点
まだコメントがありません...(´・ω・`)