-Crimsonパーサー(1)

さて、Crimsonのソースを見てみました。なるほど、org.apache.crimson.parser.InputEntity のgetColumnNumber()では常に-1を返します。検証のほうは、行しかいらないので、getLineNumber()はちゃんととれますから、Crimsonでも良しとしてました。
このへん用途に向けてきちんと動くパーサーを書くなら、Xerces2のAPIであるXNIでスキャナ書き起こすことになるのでしょうが、これは大変だなぁ。昔に、PalmのDBをパースしてSAXイベントを発生させるためにスキャナ書いたことあります。そこそこの実装できちんと動きました。しかし、今回のは普通にXMLを読むものなんで困りましたね。XMLのパースは複雑だし、すでに実装もあるので新規に書き起こす気持ちはまったくありません。Xercesの用意するXMLのスキャナをオーバーライドして直る程度だといいのですが。。。
まあ、Xercesをバンドルしますかねぇ。Xercesが巨大なだけに悩ましい。