Streaming API for XML
Streaming API for XML(StAX)は、JavaでXML文書を読み書きするためのAPIである。
従来のXML APIは、次のどちらかである。
ツリーベース - 文書全体がツリー構造でメモリに読み込まれ、呼び出し元アプリケーションはランダムアクセスできる。
イベントベース - 文書内に出現したエンティティごとに、登録されたアプリケーションがイベントを受け取る。
これらはそれぞれに利点がある。前者(例えばDOM)は文書へのランダムアクセスが可能であり、後者(例えばSAX)は使用メモリが少なくより高速に動作する場合が多い。
この2つは対極に位置するアクセス手法であると言える。ツリーベースのAPIは制約のないランダムアクセスとデータの操作が可能である一方、イベントベースのAPIは文書を1回スキャンするだけである。
StAXは、その中間の手法として設計された。StAXの考え方では、プログラムの操作点は文書内のある地点を指すカーソルである。アプリケーションがカーソルを進めるということは、必要に応じて自分がパーサーから情報を取り出すことになる(pull型)。これはSAXのようなイベントベースのAPIとは異なる。SAXではパーサーがアプリケーションにデータを送りつけるので(push型)、アプリケーション側が文書内の位置を追跡しなければならない場合は必要に応じてイベントとイベントの間で状態を保持しておく必要がある。