DOMとSAXのインターフェイスを実装したJavaのクラスライブラリは多数存在します。有名どころを以下に挙げてみましょう。
■IBM XML Parser for Java
(http://www.alphaworks.ibm.com/tech/xml4j)
JavaのXMLパーサで最も有名なものは、このIBMのものでしょう。最も早い時期に投入された完全な実装の1つです。一時は、JavaでXMLプログラミングといえばこのライブラリを使うことを意味したほどでした。DOM2およびSAX2に対応しているほか、XML Schemaのドラフト仕様も試験的に部分実装しています。
■Xerces
(http://xml.apache.org/xerces-j/)
そのIBMのコードがApache Software Foundationに提供され、オープンソースのライブラリとして生まれ変わったのがXercesです。現在最もメジャーなものといえるでしょう。DOM2およびSAX2に対応しています。
■OpenXML
(http://www.openxml.org/)
OpenXMLはフリーのXMLパーサとして登場しましたが、日本ではあまり知られていません。現在ではXercesに統合されているようです。DOM2およびSAX2には完全対応していません。
■Oracle XML Parser for Java
(http://technet.oracle.com/tech/xml/)
OracleのXMLパーサはOracle XML Developer's Kit for Javaに含まれています。この開発キットには、パーサ以外にもさまざまなツールが含まれており、Oracleのアプリケーションを開発する際によく利用されているようです。2001年1月現在、DOM2とSAX2に対応した新しいバージョンのβ版がリリースされています。
以上、さまざまなライブラリが存在しますが、これらが提供するインターフェイスは基本的に同じです。それぞれの具体的な実装方式はもちろん違うのですが、パーサのオブジェクトをインスタンス化するところを除いて、インターフェイス的にはほぼ同じ形になっています。
この、ほぼ同じだけど少しだけ違う、ということほどプログラマにとって厄介なことはありません。DOMやSAXの処理部分はほとんど同じなのに、最初の呼び出しのところだけ違うおかげで、せっかく書いたプログラムもそのライブラリ(XMLパーサ)に依存したものになってしまうのです。
この問題を解決すべく、Sun Microsystemsは「JAXP(Java API for XML Processing)」という拡張モジュールをリリースしました。インターフェイスとリファレンス実装を提供しながら、必要に応じて実装モジュールを変更できるようにするための枠組みです。
現在、JavaでXMLを処理するためのライブラリのほとんどが、このJAXPに対応しつつあります。今後JavaでXMLプログラミングといえば、JAXPを使うという形に収れんしていくでしょう(もちろん、必要に応じて実装モジュールは選択することになりますが)。こういった事情を考慮し、本連載ではJAXPに対応しているライブラリの中でも最もメジャーなXercesを取り上げ、JAXPを用いたプログラミングの解説を行います。
Copyright © ITmedia, Inc. All Rights Reserved.