前提・実現したいこと
Google AJAX Feed APIの終了に伴い、代替案を施工中です。
http://homemadegarbage.0t0.jp/cross-domain-ajax-rss
上記サイトを参照に、jquery.xdomainajax.js を使用して取得、表示(タイトル、リンク用のURL)することには成功したのですが、
取得するRSSがバージョン1で、日付がdc:dateのためうまく取得&表示ができなく困っております。
発生している問題・エラーメッセージ
日付がdc:dateのためうまく取得&表示ができない
該当のソースコード
下記、上記サイトのコードです。
下記では data[i].pubDate.text ですが、取得するRSSが dc:date のためうまく取得&表示ができなく困っております。
<script type="text/javascript" src="js/jquery.xdomainajax.js"></script>
<script>
$(function(){
$.ajax({
url: 'URL',
type: 'GET',
cache: false,
dataType: 'xml',
timeout: 5000,
success: function(res, status) {
if (status === 'success') {
// responseText から取得して、xml 形式に変換する必要があり
var xmlText = res["responseText"];
var xml = $.parseXML(xmlText);
var row = 0;
var data = [];
var nodeName;
$(xml).find('item').each(function() {
data[row] = {};
$(this).children().each(function() { // 子要素を取得
nodeName = $(this)[0].nodeName; // 要素名
data[row][nodeName] = {}; // 初期化
attributes = $(this)[0].attributes; // 属性を取得
for (var i in attributes) {
data[row][nodeName][attributes[i].name] = attributes[i].value; // 属性名 = 値
}
data[row][nodeName]['text'] = $(this).text();
});
row++;
});
for (i in data) {
$('#rss').append('<div>' +
'<a href="' + data[i].link.text + '" target="_blank"><dl>' +
'<dt><img src="' + data[i].enclosure.url + '"></dt>' +
'<dd class="title">' + data[i].title.text + '</dd>' +
'<dd class="date">' + data[i].pubDate.text + '</dd>' +
'<dd class="description">' + data[i].description.text.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'').substr(0, 70) + '</dd>' +
'</dl></a></div>');
}
}
}
});
});
</script>
試したこと
data[i].pubDate.text
を、
data[i].dc\\:date.text
としてみたりしましたが実現できておりません。
また、下記サイト
http://qiita.com/s0hno/items/36316dbb737ebe8b2bcf
にて「childrenメソッドを呼ぶ」というのを見つけたのですが、
「該当のソースコード」の
$(this).children().each(function()
〜
});
のどこに、どのように記述すればよいのかがわからない状況です。
補足情報(言語/FW/ツール等のバージョンなど)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
2017/01/12 18:16
取り急ぎの取り急ぎですが、
$(this).children().each(function()
〜
});
の中で、
$(this).find('date, dc\\:date').each(function() {
var pubtime = $(this).text();
pubtime = new Date(pubtime);
data[row].pubDate = pubtimeから月や日を取得して整形したもの;
});
のような感じで記述し、data[i].pubDate にて表示ができるようになりました。
本当にありがとうございます。