倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

dom4j の依存関係

今回は、Maven2POM ファイルを基に、dom4j-1.6.1(以下、dom4j)が依存している他のライブラリを見ていきましょう(一覧)。

Maven2 にはライブラリの依存関係に対してスコープを定義できるんでした。 以下では dom4j の POM ファイルに定義されてる依存性(dependency)を

  • "compile" スコープ
  • "optional" スコープ

に分けて見ていきます。 "test" スコープは不要なので省略します。

"compile" スコープ


dom4j に定義されている唯一の "compile" スコープ・ライブラリです。 XML ファイルの読み込み等に必要です。

groupId artifactId version 備考
xml-apis xml-apis 1.0.b2 XML 関連の Java 標準 API

この JAR ファイルには、以下のパッケージ

  • javax.xml.parsers
  • javax.xml.transform
  • org.xml.sax
  • org.w3c.dom

とそれらのサブパッケージが定義されています。 これらは、Java SE 1.4 から標準パッケージに定義されているので、それ以降の Java 実行環境を使用している場合は不必要かと思いますが*1

"optional" スコープ


XPath 関連

XPath 関連の API を使う際に必要なライブラリです。 XPath 関連の API としては、Node#selectNodes(String) などがあります。 以前の記事参照。

groupId artifactId version Web Site 備考
jaxen jaxen 1.1-beta-6 Java による普遍的な XPath エンジン

Streaming API 関連

Java SE 6 以降に標準 API に含まれた StAX (Streaming API for XML) 関連のライブラリです。 (たぶん)Java SE 6 以降の実行環境ではどちらも必要無いと思います。

org.dom4j.io 内のクラス、STAXEventReader, STAXEventWriter などを Java SE 6 以前の実行環境で使うのに必要です。 stax-apiStAX API を定義し、他の2つはその API の実装です。

groupId artifactId version Web Site 備考
stax stax-api 1.0 Streaming API for XML
pull-parser pull-parser 2 XML Pull Parser 2.0 の API と実装
xpp3 xpp3 1.1.3.3 XmlPull API の実装

ちなみに、他に依存性を指定しなければ xml-api の実装には(StAX だけでなく SAX などを使った読み込みの際にも) xpp3 が使われますが、xpp3 は XMLタグ名に日本語が使われていると例外が発生するようなのでご注意を。

JAXB 関連?

JAXB (Java Architecture for XML Binding) 関連のライブラリです。 たぶん org.dom4j.jaxb 内のクラスを使用する際に必要だと思いますが、拙者は使ったことがないので分かりません。 xsdlib, relaxngDatatype も同様です。

Java SE 6 からは、Java 標準 API に JAXB (javax.xml.bind とそのサブパッケージ) や妥当性検証 (javax.xml.validation) に関連する API が含まれているので、Java SE 6 以降の実行環境を使用している場合は、これらのライブラリは必要ないかと思います(これらのパッケージ内のクラスも使ったことがないのでなんとも・・・)。

groupId artifactId version Web Site 備考
jaxme jaxme-api 0.3 JAXB のオープンソース実装
msv xsdlib 20030807 - -
msv relaxngDatatype 20030807 - -

*1:バージョンの違いによるバグが発生するかもしれませんが、拙者が使っている分には、今のところそのようなことは起こってません。