PHP4でXMLをJSONに変換するメモ
スポンサード リンク
APIを使ってアプリケーションを構築していると、どうしてもXMLをJSONに変換して使いたくなることが多かったのでやってみた。XMLからJSONへの変換はJavaScriptでやる場合とXMLをGETしてくるプログラム側でやる場合とが考えられるが、今回はなんとなくプログラム側にした。しかしサーバのPHPはPHP4なのでSimpleXMLは使えない。
そこで、XMLからPHP変数への変換はXML_Unserializerを利用し、PHP変数からJSONへの変換はJsphonを使った。変換する関数は次のような感じ。
require_once("HTTP/Request.php");
require_once("XML/Unserializer.php");
require_once("Jsphon/Jsphon.php");
function xmlToJson($url, $callback = "") {
$req =& new HTTP_Request($url);
if (PEAR::isError($req->sendRequest())) {
die($req->getMessage());
}
$xml = $req->getResponseBody();
$xml = mb_convert_encoding($xml, "UTF-8", "auto");
$unserializer =& new XML_Unserializer();
$unserializer->setOption('parseAttributes', TRUE);
$status = $unserializer->unserialize($xml);
if (PEAR::isError($status)) {
die($status->getMessage());
}
$json = Jsphon::encode($unserializer->getUnserializedData(), false);
if ($callback != "") {
$json = $callback . '(' . $json . ')';
}
header("Content-Type: text/javascript; charset=utf-8");
echo $json;
}
これを少しいじれば、パラメータにURLとコールバック関数を与えるとJSONを返してくれるAPIとして使える。XMLなのでAmazon Web ServiceのRESTの取得とか、RSSファイルの取得とかがこれひとつでできる。
XML変換JsphonxmljsonJSONreq-unserializer-
前のエントリー: « Google Earth の衛星画像のライセンス料は5億ドル
次のエントリー: モバイルSuicaの電池切れの恐怖 »
トラックバック
このエントリーのトラックバックURL:
この一覧は、次のエントリーを参照しています: PHP4でXMLをJSONに変換するメモ:
» rss2json:RSS(XML)からJSONに変換する方法まとめ(てかYahoo!Pipesでいいじゃん?) from creazy photograph
いまさらかもしれないけどね。 ■Perlな方法 ・[JSON] コイツ、速いぞ... [詳しくはこちら]
タイトル:
URL:
リンク用HTMLタグ:
powered by Google Chart API




