Xerces 2

Revised: Oct./05th/2003

XMLプロセッサ

ここからは、実際にXML処理系でXMLを処理する方法を見ていきます。XML文書はXMLプロセッサ(パーサ)と呼ばれる装置が構文解析/字句解析し(パーズ)、その結果をアプリケーションが受け取ります。XML文書とアプリケーションの間にXMLプロセッサというインタフェースが必要だということです。

このとき、XMLプロセッサを操作するAPIとして、W3Cが勧告しているDOM (Document Object Model)や、デファクトスタンダードであるSAX (Simple API for XML)、DOMやSAXをラッピングして抽象化するJavaパッケージのJAXP (Java API for XML Processing)を使います。特に、JAXPはJ2SE 1.4以降ではコア・パッケージに含まれ、javax.xmlのサブパッケージとして利用することができます。

JavaのXML文書処理モデル
図:JavaのXML文書処理モデル

フリーで利用可能なXMLプロセッサの代表的なものは、JAXPに同梱されているCrimson、Apache XMLプロジェクトで開発されているXercesの二つが挙げられます。特に、Xercesは精力的な開発が進められており、非常に高機能かつ安定したプロセッサです。本稿執筆時点ではXerces 2.5が安定版としてリリースされています。本稿では、Xerces2を使ってDOMとSAXのAPIを試してみましょう。

Xerces2の仕様

本稿で導入するXerces2 Java Parser 2.5.0は次の仕様を満たしています。

特筆すべきことは、Xercesが名前空間とXML Schemaをサポートしていることです。

Xerces2の導入

Xerces 2の入手

本稿では、Xerces2 Java Parser 2.5.0を使います。Apache XMLプロジェクトのXerces2 Java ParserのページからDownloadを選択することで、各種のフォーマットで入手できます。Xerces-J-bin.2.5.0.zipのサイズは5.2Mとなっています。

ZIPファイルを解凍すると、ドキュメントとサンプルを含んだフォルダ"xerces-2_5_0"が生成されます。これを、Cドライブ直下に配置してください(C:\xerces-2_5_0)。

CLASSPATH

次に、C:\xerces-2_5_0に含まれているJARファイルを、xmlParserAPIs.jarを除いて、環境変数CLASSPATHに登録します。CLASSPATHに初めて登録するときは、カレント・ディレクトリを表すピリオドも登録するようにしてください。"C:\xerces-2_5_0"に導入した場合は、セットするパスは次の四つです。

以上のパスを、OS の環境変数 CLASSPATH に設定してください。設定方法の詳細は、「CLASSPATH」を参照ください。

導入後の確認

実際にサンプルのいくつかを動かしてみましょう。まず、リスト1をUTF-8でC:\java\xmldemo.xmlで保存します。次のコマンドdom.Counterは、XML文書を解析してDOMツリーを作り、要素、属性、空白、文字などの個数をカウントしてくれるものです。

C:\java\xml>java dom.Counter c:\java\xml\demo.xml
c:\java\xml\demo.xml: 110;15;0 ms (14 elems, 13 attrs, 0 spaces, 219 chars)

同様に、SAXのAPIでも同様のサンプルがsax.Counterとして用意されています。

C:\java\xml>java sax.Counter c:\java\xml\demo.xml
c:\java\xml\demo.xml: 78 ms (14 elems, 13 attrs, 0 spaces, 219 chars)

また、Xerces2はXNI (Xerces Native Interface)と呼ばれるフレームワークに則っており、独自のAPIを使うこともできます。コマンドxni.CounterはXNIのAPIで上の二つと同じ事をしてくれます。

C:\java\xml>java xni.Counter c:\java\xml\demo.xml
c:\java\xml\demo.xml: 78 ms (14 elems, 13 attrs, 0 spaces, 219 chars)


Copyright © 2003 SUGAI, Manabu. All Rights Reserved.