TOP書籍連動> PHP5とXML
まるごと PHP!
まるごと PHP!

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

著者:廣川 類(HIROKAWA, Rui)   2005/4/4
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コミュニティ活動にかけられる時間が年々減ってきているのが気がかり。


INDEX
Part5:PHP5のXMLサポート(1)
PHP5とXML
  インストール