RSSフィードを表示する
core. RSS2.0のフィード(XML)を非同期で取得して表示します。
<input type="button" value="GET" onclick="getFunc()"/> <script> function getFunc() { dojo.xhrGet({ url: '/rss.xml', handleAs: 'xml', error: function(response, ioArgs){ console.error("HTTP status code:",ioArgs.xhr.status); return response; }, load: function(response) { var html = "<ul>"; var items = dojo.query("item",response); for(i=0; i<items.length; i++) html += "<li>"+ dojo.query("title",items[i])[0].firstChild.nodeValue+"</li>"; dojo.byId("box").innerHTML = html+"</ul>"; } }); } </script> <div id="box" style="border:1px solid gray"></div>error, load のハンドラの最終行(return response;)は入れておいた方が良いようです。dojo.query で xml.getElementsById と同じ事が簡単にできます。
サンプル:
※やはりJavascriptではDOMは扱い難いです。JSONを使えば格段にパースも早く扱いやすいですので、JSONで提供されるデータがあれば迷わずそちらを選びましょう。
またこのサンプルはIE7で動作していません。これは、このブログのRSS(XML)のレスポンスヘッダが、ContentType: application/xml になっており、IEではこれを認識できないようです。text/xml であれば問題ないらしいですが、text/xmlは本来エンコーディング指定ができないので正しいとはいえません。
※上のように、xhrGetを使ったXMLの処理は色々と問題ああるので、dojox.data.XmlStore を使ったサンプル(こちら)を紹介しています。これを使うとXMLもスマートに扱えます。