« Back to Home

XPath処理エンジンjaxenを使う

デフォルトのXPathは遅くて使い物にならない、と思ったらjaxenを試してみましょう。

jaxen: universal Java XPath engine

使い方はごく簡単です。

XPath xpath = new DOMXPath("/foo/bar");
List<?> nodes = xpath.selectNodes(document);

しかもこのjaxen、universalと謳っているだけあって扱えるのはデフォルトのDOMだけではありません。dom4j, JDOM, XOMを扱えます。使い方はみんな同じで、newするクラスが違うだけです。

ちなみにdom4jとXOMはXPathの処理でjaxenを呼んでいるようです(dom4jの実装は見てないですが)。

XOMでは

nu.xom.Node node;
Nodes nodes = node.query("/foo/bar");

このとき、jaxenのベースクラスを継承したクラスを使ってXPathの評価を行っています。

ちなみにMavenを使っている場合は、pom.xmlに

<dependency>
    <groupId>jaxen</groupId>
    <artifactId>jaxen</artifactId>
    <version>1.1.1</version>
</dependency>

を追加すれば使用可能になります。