Query2XMLを使ってみた
XMLを使ってアプリを作る機会があったのと、今後増えそうなのでPHPでMySQLのデータ取ってきてXMLで表示させる物を簡単に作ってみた。
普通にSQL発行してレスポンスをXMLに整形すればおkなんだけど、本当に小さなサブ的要素にそこまで時間かけるのもなんだしという事で、今回はQuery2XMLを使ってみたよ!
導入方法
#pear install XML_Query2XML
だけ。
いくつか依存関係を問われるので同時に入れます。
MDB2の様な抽象化レイヤーとDBのドライバですね。
今回は、MDB2とMySQLのドライバを使用しています。
基本の使い方
<?php require_once 'XML/Query2XML.php'; require_once 'MDB2.php'; try{ //SQLを発行して結果を取得し、XMLに整形 $res = XML_Query2XML::factory(MDB2::factory('mysql://ID:PASS@localhost/DBName')); $sql = "SELECT * FROM hoge"; $xml = $res->getFlatXML($sql); //出力用ヘッダ header('Content-Type: text/xml'); //出力 $xml->formatOutput = true; echo $xml->saveXML(); } catch(Exception $e){ echo $e->getMessage(); } ?>
これだけ。
この表示はこんな感じ。
<?xml version="1.0" encoding="UTF-8" ?> <root> <row> <id>1</id> <col1>hoge</col1> <col2>hogege</col2> </row> <row> <id>2</id> <col1>hogetter</col1> <col2>fugatter</col2> </row> <row> <id>3</id> <col1>hogehoge</col1> <col2>fugafuga</col2> </row> </root>
簡単!!!
応用例
こいつはかなり複雑な要求もこなしてくれます。
こいつとXSLを使えば出力も整形出来るし。
あとは、XMLのタグをいじれます。
<?php $xml = $res->getXML($sql, array( 'idColumn' => 'IDが変わる', 'rootTag' => 'rootが変わる', 'rowTag' => '結果列が変わる', 'attributes' => array('属性が変わる') 'elements' => array('要素が変わる') ) ); ?>
こんな感じでOPTIONを指定すればOKです。
ここで注意が必要なのは、elementsで指定した物だけが表示されます。
attributeとeleentsはarray()で指定します。
'elements' => array('hoge','fuga','hogege'=>'fugaga')
こんな感じです。
最後のものは、hogege列をfugagaと名前を変えて表示させます。
便利だね
http://query2xml.sourceforge.net/docs/html/XML_Query2XML/tutorial_XML_Query2XML.pkg.htmlでリファレンスが見れるので、もっと便利な機能を体験してみて下さい。
サンプルも豊富でわかりやすかったです。
もっと使いこなせるようにならないと。