JavaでXMLを扱う方法(Java SE/EEに標準で組み込まれているもの)について簡単にまとめてみました。
DOM (Document Object Model)
- http://www.w3.org/DOM/DOMTR
- XMLをツリー構造として読み込んでから操作する。
- W3CがAPI仕様を策定しているため他の言語でも同じように実装ができる。
- http://www.saxproject.org
- パーサーがXMLを先頭から読み込みながらイベント(要素の開始など)を発生させ、
- アプリケーションは各イベントに対してハンドラを登録して処理を記述する。
- 仕様策定は標準化団体ではなく有志によるが、DOMに並んで多くの言語でサポートされている。
- DOMと比べて省メモリだが、ランダムアクセスが必要な処理には不利。
- https://www.jcp.org/en/jsr/detail?id=173
- パーサーがXMLを先頭から読み込みながらイベント(要素の開始など)を発生させ、
- アプリケーションはイテレータI/Fのようにイベントをループ処理で取得し、イベントの種類の応じて処理を記述する。
- 仕様はJSR173で策定されている。
- SAXがプッシュ型と称されるのに対し、StAXはプル型とされる。
JAXB (Java Architecture for XML Binding)
- https://jcp.org/en/jsr/detail?id=222
- XMLとJavaオブジェクトの相互変換するためのAPI仕様。
- 仕様はJAXB 1.0がJSR31、JAXB 2.0がJSR 222として策定されている。
- JAXPと異なりデータ変換に特化しているため学習コストが低い。