 |
|
1 2 次のページ
|
 |
PHP5とXML |
PHP4においてもXMLはサポートされていましたが、PHP5ではその機能が大幅に強化されています。
XML(eXtensible Markup Language)はいまや標準的なデータ記法として、さまざまな方面で幅広く使用されています。PHPは、DOMなどのXML関連の標準的な規格をサポートし、XMLで記述されたデータを処理・検証する仕組みや、XMLデータを動的に生成する仕組みを提供します。
XMLは、PHP4でも標準でサポートされていましたが、PHP5ではその機能が強化され、XMLデータをより簡単に取り扱うことができるようになりました。
PHP5ではXML対応の機能として、次の3つが標準でサポートされています
。
|
- XMLデータの処理用API(DOMなど)
- XMLデータの変換用API(XSLT)
- Webサービス/RPC(SOAPなど)
|
以降では、これらPHP5のXMLサポートについて解説します。なお、本稿ではWebサービスについては割愛します。詳しくは、書籍「まるごとPHP! Vol.1」の「PHPで簡単SOAPサービス」をご覧ください。
|
XMLデータ処理用API |
PHP5では、XMLデータを扱うAPIとして次の3種類がサポートされています。
|
- SAX(Simple API for XML)
- DOM(Document Object Model)
- SimpleXML
|
SAXとDOMはPHP4でもサポートされていたAPIですが、特にDOMにおいては、標準規格に準拠するようAPIが見直されるなどの機能強化が行われています。SimpleXMLは、XMLデータをより簡便に扱うことができる仕組みとしてPHP5において新たに導入されたAPIです。次にこれらのAPIの特徴について紹介します。
|
SAX
|
SAXはイベントドリブンの手続き型モデルを使用するAPIで、XMLのタグの種類に応じて、ユーザーが定義したコールバック関数がコールされ、この関数に記述した処理が行われます。データをストリームとして扱うため、DOMと比較して大量のデータをより少ないリソースで処理できます。しかし、SAXはXMLデータの階層構造を解釈しないため、コールバック関数を用いてアプリケーション内にXMLデータの階層構造を解釈する仕組みを実装する必要があります。
|
DOM
|
DOMは、文書データをオブジェクトで記述する仕組みとしてW3Cにより規格化されています。DOMにおいては、XMLデータのツリー構造を解釈するため、データの追加や一部データの抽出などの操作がSAXよりも簡単にできますが、DOMツリーを構築するためにXMLデータ全体を読み込む必要があり、大量のデータの処理には不向きといわれています。
DOMの利点の1つは、W3Cにより規格化され、Javaや.NETなどにおいてXMLデータ用のAPIとしても広く使用されていることです。PHP5のDOMサポートでは、DOMレベル2相当のAPIをサポートし、DOMレベル3の一部もサポートしています。このため、Javaなどで構築されたアプリケーションを移植することも容易になっています。
PHP4でもDOMはサポートされていましたが、独自のAPIを使用しているために習得が困難であったり、動作が不安定であるという問題がありました。PHP5においては、DOMサポートが標準規格に基づき再度実装され、機能の強化が行われています。
|
SimpleXML
|
SimpleXMLは、XMLデータをより簡便に扱うことができる仕組みとしてPHP5において新たに導入されたAPIです。SimpleXMLを使用することで、DOMやSAXと比べてより直接的でわかりやすいXMLデータへのアクセスが可能となります。
SimpleXMLオブジェクトとして読み込まれると、XMLの要素タグは、オブジェクトのプロパティに変換されます。DOMの場合、深い階層にあるデータにアクセスする際には、多重ループを組むなどの煩雑な処理が必要でしたが、SimpleXMLでは複数のプロパティを組み合わせることで容易にアクセスできます。
SimpleXMLで記述されたオブジェクトは、DOMオブジェクトとの相互変換が可能です。このため、DOMとSimpleXMLの利点を組み合わせたアプリケーションを構築することも可能です。
以上解説した各APIの特徴をまとめたものを表1に示します。
|
API |
特徴 |
SAX |
○ |
大量のデータを効率的に処理 |
△ |
階層構造を理解できない |
DOM |
○ |
階層構造を理解できる |
○ |
規格化され実用例が豊富 |
△ |
大量のデータを処理するには大きなメモリを要する |
△ |
ツリー構造をたどったアクセスのみ可能 |
SimpleXML |
○ |
自由で直感的なデータアクセスが可能 |
△ |
独自APIで実用例も少ない |
|
表1:各APIの特徴
|
1 2 次のページ
|

|
|

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