Java の軽量 XML パーサ
ユニットテストの実行に XML パーサが必要になった。
org.xml.sax.helpers.XMLReaderFactory.createXMLReader()
を使っているので、SAX2 に準拠したパーサが必要だ。
また、ユニットテストのためだけに Xerces のような横綱級ライブラリを含めたくはない。パーサのライブラリは軽くなくてはいけない。
探してみると、条件に当てはまりそうなライブラリがふたつ見つかった。
.jar
の容量だけでいえば NanoXML の圧勝。
SAX サポートを追加するための nanoxml-sax-2.2.3.jar
を含めても、40KB に満たないコンパクトさだ(なお、NanoXML Lite というバージョンもあり、こちらは 6KB 以下)。ただ、残念なことに SAX 2 が実装されていないようだった。
他方、Piccolo では SAX2 が実装されているようなので、こちらを使うことにする。ドキュメントをよると、 開発に構文解析器 (JFlex)とコンパイラ・コンパイラ (BYACC/J) を用いているのがユニークな点らしい。
SAX パーサは java
コマンドに -D
オプションで指定するのが一般的だが、今回は System.setProperty
で指定した。Piccolo の SAX2 パーサは com.bluecast.xml.Piccolo
になる。
System.setProperty("org.xml.sax.driver", "com.bluecast.xml.Piccolo");
...
これで無事、ユニットテストが動作した。