- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#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(おもしろかった[3],そうでもない[0])
#vote(おもしろかった[4],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}