JKL.ParseXMLを試してみた

prototype, Sack of Ajaxと、ajax関連のjavascriptライブラリをここでは取り上げて来ましたが、大本命と言えるものが登場してきました。ajax mlで話題の、川崎さん作JKL.ParseXMLです。

使い方は川崎さんのサイトに詳しくありますので、ここでは説明しません。代わりに、このライブラリを使うと何がうれしいのか、語っちゃいます。

まず1点目。XMLをJavascriptのオブジェクトに変換してくれちゃうことですね。そのためのライブラリなので当たり前なのですが。でもこれって、ものすごく需要があると思うんですよね。

現在、様々なウェブ上のサービスがRESTベースのAPIを提供していますよね。で、そのAPIを利用したサイトというのもまた色々があるわけですが、これらのサイトはおそらく、RESTで取得したXMLを、サーバサイドで加工してHTMLに出力、という様な処理をしてることが多いんじゃないかと思います。で、これにajaxを加えようとすると、俺に考えつくのは、

という、どれもイマイチな方法ばかりなんですよ。これがJKL.ParseXMLを使うと、

ってことになります。ほんっと、すばらしいです。

で、2点目の良い点なのですが、xmlHttpRequestでデータを取得するルーチンがものすごく簡単に書ける、ということですね。どれぐらい簡単か、Sack of Ajaxで説明したのと同様に、prototypeやSackと比較してみます。

前と同じ例ですが、まずはprototypeのコード。

new Ajax.Request(
    '/deislde/index.cgi',
    {
      method: 'GET',
      onComplete: function(request){
        eval('tagsListObj = ' +  request.responseText);
    displayTags();
      }
    });

次にSackでのコード。(Sack of Ajaxでのサンプルは微妙に間違ってます。こっちが正しいです。)

ajax = new sack('/delside/index.cgi');
ajax.method = 'GET';
ajax.onCompletion = function() {
                        var response = ajax.response;
                eval('tagsListObj = ' +  response);
                displayTags();
                    };
ajax.runAjax();

これをJKL.ParseXMLで書き直すと、

var url = "/delside/index.cgi";
var xml = new JKL.ParseXML( url );
var tagsListObj = xml.parse();
displayTags();

といった感じで、ものすごく簡略化できます。しかも、しかもですよ、簡略化されるのはJavascriptだけではありません。prototypeとSackでは、サーバ側でXMLをJSONに変換しているのですが、JKL.ParseXMLはそれすらも不要!XMLのまんまでJavascriptに渡してやればいいんです。素敵です。

今ちょうど、作りかけのajaxアプリがあるので、早速使わせて頂きます。川崎さん、ありがとうございます!

俺も人が作ったものばかり使ってないで、こういうものを提供できるようにならないとなぁ。