質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

6235閲覧

クロスドメインでのRSS取得にて、dc:dateを取得する方法

ms_porter

総合スコア7

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/01/12 02:36

編集2017/01/12 02:54

###前提・実現したいこと
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/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こちらの方法は試してみたのでしょうか?

投稿2017/01/12 06:31

turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ms_porter

2017/01/12 09: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 にて表示ができるようになりました。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問