wiss inc

WISS inc.

RSSフィードを表示する (XmlStore)

dojox. RSS2.0のフィード(XML)をXmlStoreを使い取得して表示します。

dojoのcoreのみでサンプルを作った際にDOMの操作性の悪さやIE7で表示されないなど問題があったので、今回、dojoxのdojox.data.XmlStoreを使ってRSS2.0のフィードをリスト表示します。
XmlStoreのメソッドfetchを使えば、フィルタリングや件数指定なども可能なので拡張性もあり、またRead APIを実装した他のデータストアと同様の操作性を持つのでデータの場所や形式を変更しても修正が楽だと思います。

<input type="button" value="GET"
  onclick="rsslist({url:'/rss.xml'})"/>
<script>
function rsslist(opts) {
  var settings = { url:'', entryclass:'target',
    rootItem: "item", count: 5 };
  //option target:'_blank' count:5
  if (opts) for (var k in opts) settings[k] = opts[k];

  dojo.require("dojox.data.XmlStore");
  var store = new dojox.data.XmlStore(
    {url: settings.url, rootItem: settings.rootItem}
  );
  var gotFeeds = function(items, request){
    var target = '';
    if (settings.target) 
      target = ' target="' + settings.target + '"';
    var buffer = ["<ul>"];
    for (var i = 0; i < items.length; i++){
      var item = items[i];
      buffer.push('<li><a href="' +
      store.getValue(item, "link") + 
      '"' + target + '>' +
      store.getValue(item, "title") + '</a></li>'
      );
    }
    buffer.push("</ul>");
    dojo.byId(settings.entryclass).innerHTML = 
      buffer.join("");
  }
  var request = 
    store.fetch({onComplete: gotFeeds, 
      count:settings.count});
}
</script>
<div id="target" style="border:1px solid #333"></div>


サンプル:


TITLE