|
||||||||
| 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に示した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 |
||||||||
XSLTモジュールは、PHPの作成時に組み込むか、拡張モジュールとして組み込みます。PHPに組み込む場合には、--with-xslをconfigureへのオプションとして追加し、PHPを構築します。 |
||||||||
# ./configure --with-xsl [その他のオプション] |
||||||||
拡張モジュールとして組み込む場合には、PHPがインストール済みの環境で次の手順により、拡張モジュールを作成、インストールします。 |
||||||||
# cd php-5.0.0/ext/xsl |
||||||||
最後に、設定ファイル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/ |
||||||||
「php -m」を実行したときに「xsl」が出力に含まれていれば、組み込みは成功です。 |
||||||||
|
1 2 次のページ
|
||||||||
|
|
||||||||
|
|
||||||||
|
||||||||
|
|
||||||||
|
||||||||
|
|
||||||||

