node.js+jQueryでxmlパースすると、とっても楽チンな件
ちょっとnode.jsに興味しんしんだったのでnode.js+jQueryでパースするべく環境構築とパースサンプル作ってみました。
node.jsの環境構築
僕の場合はさくらVPSのCentOS5.5に環境を構築しました。下記のサイトを参考にしたらうまくいった気がします(説明放棄)
サンプルとしてGoogleのAPIを使って住所から経度・緯度を取得してみました
こんなxmlのcoordinatesの中身をパースします。(直リンだと謎のエラーなので下記URLをコピペしてみてください)
http://maps.google.com/maps/geo?q=%E6%9D%B1%E4%BA%AC%E9%83%BD&output=xml&key=ABQIAAAAGC9D4CFb4VMVrQD1e1-4fRTXtUynXuM2xOtDcwmfq_eki44wzhT7CVjcbXRYQh3-nGC51nk2lDhNXg
サンプル
自分で作ったのを少し改変してるので上手く動かないかもしれません。。
あとapikeyはこちらから取得してくださいませ
var request = require("request"),
jsdom = require("jsdom"),
sys = require("sys");
var url1 = "http://maps.google.com/maps/geo?q=";
var url2 = "&output=xml&key=********************************";
var jquery_js = 'https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';
var url = url1 + encodeURI("東京都") + url2;
request({uri:url}, function (error, response, body) {
//bodyにhtml取得結果が入ってます
if (!error && response.statusCode == 200) {
var document = jsdom.jsdom();
var window = document.createWindow();
jsdom.jQueryify(window, jquery_js, function (window, jQuery) {
jQuery(body).find("coordinates").each(function(){
sys.print(jQuery(this).html());
});
});
}else{
sys.print("error!");
}
});
参考になったサイト
(英語は読めませんがコードは読めそう)
まとめたいまとめ
これをphpとかでやろうとすると色々めんどくさそうだなーと思った次第。まあ慣れでしょうけどjQueryを使ってるからコードが短い短い!
node.js+jQueryは個人的にお気に入りになりそうな環境でした。
今後のnode.jsの動向が気になる今日この頃。
ついでに...モジュール化はこの辺↓読んでおくといいと思います. 下の方は*あとで読む