2009年6月19日金曜日

XML_Serializerを利用して(連想)配列をXMLに変換

スズキです。

以前、XML_Serializerを利用して、unserialize(XMLを(連想)配列に)する方法を紹介しました。
http://blog.suz-lab.com/2009/01/xmlunserializerpear.html

今回はその逆で、(連想)配列をXMLに変換する方法です。

まずはyumでインストールです。
# yum install php-pear-XML-Serializer

そして、コードは下記のようになります。

--------【PHP】--------
// オプションの指定
$option = array(
  "indent" => " ",
  "linebreak" => "\n",
  "typeHints" => false,
  "addDecl" => true,
  "encoding" => "Shift_JIS",
  "rootName" => "data",
  "defaultTagName" => "entry",
);

// ヘッダーの出力
header("content-type:text/xml;charset=Shift_JIS");

// XMLの出力
$serializer = new XML_Serializer($option);
$status = $serializer->serialize($result);
if($status === true) {
  print($serializer->getSerializedData());
}
--------
※"$result"にはPDOにてDBからfetchAllしたものが入っている前提です。

するとこんなXMLが出力されます。

--------【PHP】--------
<?xml version="1.0" encoding="Shift_JIS"?>
<data>
 <entry>
  <id>4</id>
  <name>NAME</name>
  <message>COMMENT</message>
 </entry>
 <entry>
  <id>5</id>
  <name>NAME</name>
  <message>COMMENT</message>
  </entry>
</data>
--------

「id, name」はDBのカラム(連想配列のキー)です。
「entry」はオプションで指定した"defaultTagName"です。
「data」はオプションで指定した"rootName"です。

ということで、今後のXML設計は、XML_Serializerで出力しやすいことも考慮したいなー。

0 コメント: