XML Processorの基本機能は,XML文書の処理に必要となるXML文書の構文解析を実施します。XML Processorの基本機能が提供する3種類の解析機能(パーサ)と,各パーサの特徴を次に説明します。
DOMパーサは,XML文書に含まれる要素・属性・テキストなどをすべて解析し,その内容をDOMツリーと呼ばれるオブジェクトツリーとしてメモリ上に展開します。DOM APIを使うことで,DOMツリーの中を自由にたどったり,任意のデータを参照・更新・削除したりできます。
SAXパーサは,XML文書を先頭から順次解析して,要素の開始や終了,テキスト,処理命令などの解析イベントが出現するたびに所定の処理(コールバックメソッド)を呼び出す,イベント駆動形のパーサです。
解析が開始されると,解析イベントの種類に応じたコールバックメソッドがそのつど呼び出され,要素名やテキストデータなどの解析データが引数としてコールバックメソッドに渡されます。
コールバックメソッドの処理内容をあらかじめ定義しておくことで,XML文書の内容に応じた処理ができます。
StAXパーサはSAXパーサと同じように,XML文書を先頭から順次解析するイベント駆動形パーサです。
SAXパーサでは解析処理が自動的に進むのに対し,StAXパーサではユーザがパーサに対して解析イベントを要求したタイミングで解析処理が進むため,StAXパーサを使うと任意のタイミングで解析処理を進めたり中断したりすることが容易にできます。また,StAXパーサに解析イベントを要求し,それによって得た解析データの種類や内容に応じて処理を振り分けることで,XML文書の内容に応じた処理を実行できます。
各パーサのメリットとデメリットを次の表に示します。
表C-2 各パーサの特徴
パーサ種別 | メリット | デメリット |
---|---|---|
DOMパーサ | XML文書に対して追加や削除などの編集操作ができる。 | ほかのパーサに比べてメモリ消費量が大きく,処理速度が遅い。 |
SAXパーサ | 他のパーサに比べてメモリ消費量が小さく,処理速度が速い。 | XML文書に対して追加や削除などの編集操作ができない。 |
StAXパーサ | 上記のSAXパーサのメリットに加え,解析の実行・中断をユーザが制御できる。 | StAXパーサ単体ではXMLスキーマによる妥当性検証ができない。 |