// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
[[XJavaDoc>http://xdoclet.sourceforge.net/xjavadoc/]]はXDocletでも使用されている、JavaDocをパースするエンジンです。[[EclipseのJavaDocパーサ>Eclipse/プラグイン開発のTIPS集/ソースコードを解析するパーサASTParser#p8538c5a]]がどうもタコな動きをする(失礼っ)ので、なんかいいのないかなあと探してたらこれに行き着きました。Eclipseのパーサは ASTVisitor#visit(Javadoc node) でJavaDocインスタンスを取得しそこからJavaDocを解析するのですが、
  @spring.bean id = "hogehoge.Hoge" singleton="false"
などの記述をうまくパースする方法がわかりませんでした((使い方が悪い??))。idの値であるhogehoge.Hogeだけを取得することができないようでした。

そこでこれを使ってみたのですが、とても簡単にJavaDocを解析することができました。

**インストール [#ye886844]
サイトを見てもダウンロードできるリンクはないようだったので、XDocletに同梱されている xjavadoc-1.1.jar を使用することにしました。また、commons-logging.jar も必要ですね。


**やってみる [#c62b9993]

-対象のJavaDocコメント
 /**
  * Hogeクラス
  * 
  * @spring.bean id = "hogehoge.Hoge" singleton="false"
  * @version $Revision: 1.1 $
  * @author Masatomi KINO
  */

-プログラム
 String javadoc = "/**\n"
         + " * Hogeクラス\n"
         + " * \n"
         + " * @spring.bean id = \"hogehoge.Hoge\" singleton=\"false\"\n"
         + " * @version $Revision: 1.1 $\n"
         + " * @author Masatomi KINO\n" + " */\n";
 Token token = Token.newToken(0);
 token.image = javadoc;
 XDoc doc = new XDoc(token, null, new XTagFactory());
 System.out.println(doc);
 XTag tag = doc.getTag("spring.bean");
 System.out.println(tag);
 System.out.println(tag.getAttributeValue("id"));
 System.out.println(tag.getAttributeValue("singleton"));

実行結果:
 /**
     * Hogeクラス
     * 
     * @spring.bean
     *    id="hogehoge.Hoge"
     *    singleton="false"
     * @version $Revision: 1.1 $
     * @author Masatomi KINO
     */
 xjavadoc.DefaultXTag@52198af1
 hogehoge.Hoge
 false
 
**@author hogehgoeみたいな場合のパース方法 [#s4672c87]
上の例は
 @spring.bean id="hogehoge.Hoge" singleton="false"
などのように@タグ内に key=value がある形式でしたが
 @author hogehgoe
のように@タグとvalueのみの場合は
 Tag tag = doc.getTag("author");
 System.out.println(tag.getValue());
などのようにするだけです。簡単ですね。





----
この記事は
#vote(おもしろかった,そうでもない)
#vote(おもしろかった[4],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS