TOP書籍連動> 使用例(3)




まるごと PHP!
まるごと PHP!

Part5:PHP5のXMLサポート(3)

著者:廣川 類(HIROKAWA, Rui)   2005/4/8
1   2  次のページ
使用例(3)
SimpleXML

   続いてSimpleXML APIの使用方法について説明します。SimpleXMLは、オブジェクトマッピングXML APIの一種です。

   このAPIは、DOMと同様にXMLデータをツリー構造で扱いますが、XML要素をPHPのネイティブなオブジェクトに変換するところが異なります。いったんXMLデータをSimpleXMLオブジェクトに変換した後は、通常のPHPオブジェクト変数と同様の方法でXMLデータにアクセスできます。

   早速、SimpleXMLでリスト1に示したXML文書を処理する例を見てみましょう。XMLデータを読み込んでHTMLテーブル形式で出力するサンプルコード(sxe.php)をリスト6に示します。

リスト6:SimpleXMLの例(sxe.php)
 1 <?php
 2 $books = simplexml_load_file ('sample.xml');
 3 print "<table>";
 4 foreach($books->book as $book) {
 5print <<<EOS
 6 <tr><th>$book->title</th><td> $book->author</td></tr>
 7 EOS;
 8 }
 9 print "</table>";
10 ?>

   このコードは、リスト2に示したSAX APIと同様の動作となります。リスト6のコードを見ると、SAX APIによる記述例と比べて格段に簡潔でわかりやすいコードとなっていることがわかります。

   もう少し詳しく見てみましょう。まず、XML文書のパスを指定してsimplexml_load_file関数をコールし、SimpleXMLオブジェクトを生成します(2行目)。

   この関数により返される変数$booksは、ルートノード(book)を指すSimpleXML型のオブジェクトです。ルートノードの任意の子ノードには、$books->book->titleのようにプロパティとしてアクセスできます。

   リスト6のスクリプトでは、foreachにより反復処理を行い、HTMLテーブルとしてデータを出力しています(4〜8行目)。

   このスクリプトを実行すると、図2と同じ出力が得られます。

   SimpleXMLオブジェクトとDOMオブジェクトは相互に変換することが可能です。SimpleXMLオブジェクトをDOMオブジェクトに変換するには、次のように記述します。

$dom = dom_import_simplexml($sxe);

   また、DOMオブジェクトをSimpleXMLオブジェクトに変換するには、次のように記述します。

$sxe = simplexml_import_dom($dom);

   データの追加などの処理は、DOM APIのほうが容易です。一方、階層構造のデータに簡便にアクセスするためには、SimpleXML APIのほうが便利です。したがって、必要に応じてDOMオブジェクトとSimpleXMLオブジェクトを相互に変換することで、双方のAPIの便利なところを最大限に利用することができるのです。

XMLデータ変換用API(1)

   PHP5は、XMLデータの変換を行うAPIとしてXSLTをサポートします。PHP4では、XSLTエンジンとしてSablotronが使用されていましたが、PHP5ではlibxml2に基づくlibxsltが採用されています。libxsltはオープンソースのXSLTエンジンでは最速の部類に属する優れたXSLTプロセッサです 。

インストール

   XSLTを使用する手順を次に示します。

   XSLTモジュールはlibxslt 1.0.18以降がインストールされていることを前提としています。libxml2と同様に最近のLinuxディストリビューションの多くではlibxsltがインストールされていたり、RPMなどのパッケージが用意されています。ここでは、ソースコードからインストールする手順を示します。まず、http://xmlsoft.org/から最新版(執筆時点でlibxslt-1.1.7)のアーカイブを入手し、インストールします 。

# tar xzvf libxslt-1.1.7.tar.gz
# cd libxslt-1.1.7
# ./configure
# make
# make install

   XSLTモジュールは、PHPの作成時に組み込むか、拡張モジュールとして組み込みます。PHPに組み込む場合には、--with-xslをconfigureへのオプションとして追加し、PHPを構築します。

# ./configure --with-xsl [その他のオプション]
# make
# make install

   拡張モジュールとして組み込む場合には、PHPがインストール済みの環境で次の手順により、拡張モジュールを作成、インストールします。

# cd php-5.0.0/ext/xsl
# phpize
# ./configure --with-xsl
# make
# make install

   最後に、設定ファイルphp.iniを編集し、extension_dirを拡張モジュールがインストールされたディレクトリに設定します。ここでは、/usr/local/lib/php/extensions/no-debug-non-zts-20040412/にインストールされているものとします。

extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20040412/
extension=xsl.so

   「php -m」を実行したときに「xsl」が出力に含まれていれば、組み込みは成功です。

1   2  次のページ



著者プロフィール
著者:廣川 類
PHPと出会ってから早9年が過ぎ、常に進化し続けるその姿を日々楽しんでいる。PHPコミュニティ活動にかけられる時間が年々減ってきているのが気がかり。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
Part5:PHP5のXMLサポート(3)
使用例(3)
  XMLデータ変換用API(2)
まるごと PHP!
Part1 PHP5のオブジェクト指向(1)
PHP5のオブジェクト指向(2)
PHP5のオブジェクト指向(3)
Part2 トライ!SQLite(1)
トライ!SQLite(2)
トライ!SQLite(3)
Part3 MySQL拡張サポート(1)
MySQL拡張サポート(2)
MySQL拡張サポート(3)
Part4 PDO(PHP Data Object)データベース抽象化レイヤクラス(1)
PDO(PHP Data Object)データベース抽象化レイヤクラス(2)
PDO(PHP Data Object)データベース抽象化レイヤクラス(3)
Part5 PHP5のXMLサポート(1)
PHP5のXMLサポート(2)
PHP5のXMLサポート(3)
Part6 PHP4からPHP5への移行のポイント