WebサービスのXMLデータをJSONPに変換する – Yahoo Query Language (YQL) –
前記事の「Yahooテキスト解析 Webサービス」の解析結果はXML形式で返されるので、取り扱いが少々面倒だ。そこで、Yahoo Query Language (YQL) を使って、これをJSON(JSONP)形式に変換する。(解説記事はこれ。)
ざっくり言うと、「解析を依頼するリクエスト文字列」を「YQLに投げて結果を取り出す」ことになる。テキスト解析のリクエストはYQLから投げられるので、自分が発行するのはYQLに対するリクエストのみ。また、解析対象文字列のエンコードはYQL側で行われるようなので、そのまま渡すだけでOK。
function KanjiToKana(word, callback){
// 解析サーバに対するパラメータ
var param = 'appid=' + appid+ '&'; param += 'sentence=' + word;
// 解析サーバへのリクエスト文字列
var uri = 'http://jlp.yahooapis.jp/MAService/V1/parse' + '?' + param;
// YQLサーバへのリクエスト文字列
//// url = ... で解析サーバへのリクエストURLを記述
//// SELECT * ... で結果の取り出し方法を記述(今回は*を指定してそのままもらう)
var query = "SELECT * FROM xml WHERE url = '" + uri + "'";
//console.debug(query);
// YQLサーバへのリクエスト発行
$.getJSON("http://query.yahooapis.com/v1/public/yql?callback=?", {
q: query,
format: "json"
}, function(d){
// 結果の中から必要な部分のみ取り出し
var ret = d.query.results.ResultSet.ma_result.word_list;
callback(ret);
});
}
例えば、これに「越後湯沢」を与えて実行すると、戻り値(ret)は1つのオブジェクトで、
ret.word.reading に求めている「えちごゆざわ」がセットされている。(ちなみに、これが名詞であることも合わせて教えてくれる。)


[…] 解析結果は(少々やっかいなことに)XML形式で返される。これをJSON(JSONP)で取り扱う方法は別途説明する。 […]