PHPでXMLを簡単に出力する方法
今度はPHPでXMLを簡単に出力する方法の紹介です。
Flexとの連携で威力を発揮するでしょう。
昨日の日記と同じようにpearのXML_Serializerのインストールです。
# pear install http://download.pear.php.net/package/XML_Serializer-0.18.0.tgz
PHPでデータベースの内容をXML_Serializerを使って効率よく出力する方法。
<?php require_once 'XML/Serializer.php'; $options = array( "indent" => " ", "linebreak" => "\n", "typeHints" => false, "addDecl" => true, "encoding" => "UTF-8", "rootName" => "result", "defaultTagName" => "item", ); $serializer = new XML_Serializer($options); $sql = "SELECT * FROM book_data ORDER BY id ;"; $result = mysql_query( $sql ); $valArr = array(); while( $val = mysql_fetch_assoc( $result ) ){ $valArr[] = $val; } $status = $serializer->serialize($valArr); if( $status === true ) { $xml = $serializer->getSerializedData(); header ("Content-Type: text/xml; charset=UTF-8"); echo $xml; exit; } exit; ?>
ミソはデータベースの内容を配列(連想配列)で受け取る部分です。
<?php $valArr = array(); while( $val = mysql_fetch_assoc( $result ) ){ $valArr[] = $val; } ?>
PHPの出力サンプル
<?xml version="1.0" encoding="UTF-8"?> <result> <item> <id>2</id> <isbn>4873113652</isbn> <title>初めてのPHP & MySQL 第2版</title> <image>http://ecx.images-amazon.com/images/I/51X-I4MADBL.jpg</image> <print>1</print> </item> 〜 省略 〜 <item> <id>9</id> <isbn>4861342627</isbn> <title>花がふってくる (DARIA BUNKO)</title> <image>http://ecx.images-amazon.com/images/I/41%2BNXDh-88L.jpg</image> <print>1</print> </item> <item /> </result>
個人的に便利だなぁって思うのが、上記のプログラムだとxmlのタグを自動で変更してくれる点。
MySQLで以下のように書くとxmlのタグも自動で変わります。
通常のsql
SELECT id FROM book_data;
通常のxml出力例
<item> <id>9</id> </item>
ちょびっと自分用に名前を変更
SELECT id as itemid FROM book_data;
自分用のxml出力例
<item> <itemid>9</itemid> </item>
xmlのタグの書き換えって意外にめんどいので便利です。
簡単でかつ柔軟性のあるプログラムっていいね\(゜ロ\)(/ロ゜)/