以前試したMyLynのWikiTextは、一部の記法が残ってしまうことがあり({ja|こういうのとか})、Wikipediaに対して使う分には今ひとつだった。
次に試したのがjava-wikipedia-parser。これはシンプルで使いやすかったのだけど、たまにパースエラーが出ることがあったのとMavenリポジトリが見当たらなかったのでパス。
JWPLはMavenのセントラルにも上がっていて使えそうに見えたけど、依存ライブラリの数が多く当該機能だけ使うのに向いているか分からなかったのでパス。
ということで落ち着いたのが、gwtwiki。
gwtwiki(Bliki engine)
http://code.google.com/p/gwtwiki/
導入
gwtwikiはヘルプもしっかりしており、Wikipediaのページを1万件ほどパースさせた限りではエラーが起こることもなく、コードも完結で良かった。
Mavenでの記述は以下
http://code.google.com/p/gwtwiki/wiki/MavenSupport
wiki記法→HTMLへの単純な変換はこちら
http://code.google.com/p/gwtwiki/wiki/Mediawiki2HTML#Simplified_example_for_converting_Wikipedia_texts_to_HTML
Mavenで導入した場合、HTTPClientが入ってしまう。けど普通にパースするだけならいらないようで、除外しても普通に動いた。
<dependency>
<groupId>info.bliki.wiki</groupId>
<artifactId>bliki-core</artifactId>
<version>3.0.17</version>
<exclusions>
<exclusion>
<groupId>commons-httpclient</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
サンプルコード
シンプルな例ではこれだけ。
import info.bliki.wiki.model.WikiModel;
WikiModel model = new WikiModel("", "");
setup();
String html = model.render(wikiText);
これでHTMLになってくれる。尚、HTML、HEAD、BODYなどのタグは生成されない。本文だけ。
WikiModelに渡している引数は、imageBaseURLとlinkBaseURL。画像やリンクの部分のベースURL。ただ、うちの環境ではこれらを設定してもリンクがうまく生成されなかった。設定が足りないのだろうか。