« XML_Serializerを使ってみよう1 | トップページ | PHPでQRコードを作ってみよう »

2006年11月17日

XML_Serializerを使ってみよう2

前回に引き続きXML_Serializerを紹介します。
前回は、XMLをObjectに変換するプログラムをご紹介しましたが、今回は、ObjectをXMLに変換するプログラムをご紹介します。

・XMLをObjectに変換するプログラム(前回の記事)
XML_Serializerを使ってみよう1
・PEAR::XML_Serializerダウンロード
PEAR::XML_Serializer
・インストールに関しては下記をご覧下さい
レンタルサーバーでPEARを使う方法

今回は、前回読み込みに使った「my.xml」と同じものを作ります。
my.xml

<?xml version="1.0" encoding="UTF-8"?>
<myxml>
  <myName>ピヨヒコ</myName>
  <myAge>25</myAge>
</myxml>

まずは下記のような単純なクラスファイルを作ります。
・myXml.php

class MyXml {
  var $myName;
  var $myAge;
}

仮にこのクラスファイルの名前を「myXml.php」とします。

このクラスファイルを使って、XMLの生成をしてみます。
まずはじめに、XML_Serializerと先ほど作ったmyXml.phpをインクルードさせます。

require_once("XML/Serializer.php");
require_once("myXml.php");

次は、myXmlオブジェクトを生成して、「myName」「myAge」各プロパティをセットします。

$myXml = new MyXml();
$myXml->myName = "ピヨヒコ";
$myXml->myAge = "25";

次に、パラメータを準備した後にXML_Unserializerの宣言をします。
$param = array(
  XML_SERIALIZER_OPTION_INDENT => "\t",
  XML_SERIALIZER_OPTION_XML_ENCODING => 'UTF-8',
  XML_SERIALIZER_OPTION_XML_DECL_ENABLED => TRUE,
);
$xml = new XML_Serializer($param);

前回と同じく、$paramというハッシュを準備して、それをXML_Serializer宣言の引数にセットしています。
XML_SERIALIZER_OPTION_INDENTはインデントを指定します。ここでは「\t(TABキー)」を指定します。
XML_SERIALIZER_OPTION_XML_ENCODINGは宣言する文字コードを指定します。宣言するだけで実際には文字コード変換はされませんのでご注意下さい。もし、文字コードを変更したい場合は、mb_convert_encoding()等を使って下さい。
XML_SERIALIZER_OPTION_XML_DECL_ENABLEDを、TRUEにするとXML宣言文を追加します。
ここで紹介した以外にも沢山の設定ができますので興味のある方は調べてみて下さい。

次はいよいよオブジェクトをXMLに変換します。
非常に簡単で以下の一行を加えるだけです。

$xml->serialize($myXml);

最後にデータを表示させます。

header("Content-Type: text/xml; charset=utf-8");
echo $xml->getSerializedData();
exit();

getSerializedData()メソッドで、変換したXMLを参照できます。
今回は直接表示させましたが、fputs()を使ってXMLファイルを作ることも可能です。

今回のスクリプトを1つにまとめると

require_once("XML/Serializer.php");
require_once("myXml.php");

// シリアライズ処理を行うオブジェクト
$myXml = new MyXml();
$myXml->myName = "ピヨヒコ";
$myXml->myAge = "25";

// XMLを生成する
$param = array(
  XML_SERIALIZER_OPTION_INDENT => "\t",
  XML_SERIALIZER_OPTION_XML_ENCODING => 'UTF-8',
  XML_SERIALIZER_OPTION_XML_DECL_ENABLED => TRUE,
);

$xml = new XML_Serializer($param);
$xml->serialize($myXml);

header("Content-Type: text/xml; charset=utf-8");
echo $xml->getSerializedData();
exit();


このようになります。

スクリプトの実行例

2回に渡ってXML_Serializerをご紹介させて頂きましたが、いかがでしたでしょうか?
XMLを使うことで、別サーバーのデータを簡単に扱えるようになったり、異なるプログラム言語同士でデータのやり取りを行うことができます。XMLを自在に操ることが出来ればプログラミングの幅が広がるのではないでしょうか。

PEAR::XML_Serializerのご紹介にあたり下記の「PEAR入門 PHP標準ライブラリを極める!」を参考にさせて頂きました。
PEARのインストール方法や基本的なPEARの使い方について書かれています。細かい部分まで記述してありますので参考になると思います。
Product image for ASIN: 4798109592PEAR入門 PHP標準ライブラリを極める!

・関連記事
XML Libraryを使ってみようを見る
シンプルで簡単にXMLを扱えます。

トラックバック

このエントリーのトラックバックURL:
http://www.s-memo.net/mt/mt-tb.cgi/7

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)