2012-10-12 13 views
9

プログラムでJava documentationにアクセスするためのAPIはありますか? Eclipseのようなエディタ/ IDEがIntelliSenseで行うことと似たもの。確かに、javadocで生成されたhtmlを解析して索引付けすることはできますが、スタンドアロンパッケージとしてすでに存在するものがあるかどうかを知ることは素晴らしいことです。Javaドキュメントへのプログラムによるアクセス

更新: 明確にするために、私はJava言語実装のドキュメントにプログラムでアクセスしようとしています。しかし、簡単な方法はありませんが、Oracleのサイトからopenjdkを入手してからmake docsを実行して、ドックレットを提供して非HTML形式の出力を得る必要があります。これは私が最初から避けようとしていたものです。だから私は現在、$ PLATFORMが解決されず、ソースビルドに失敗した理由を理解しようとしているすべてのMakefileを読んでいます!

最後に解決したもの:

スクラップ用HTMLドキュメント。うん私の仕事を終わらせることを実現しました。

import urllib2 
import pymongo 

mongo = pymongo.Connection('localhost') 
mongo_db = mongo['api_db'] 
mongo_collection = mongo_db['api_collection'] 

URL='''http://docs.oracle.com/javase/6/docs/api/index-files/index-''' 
URL_range = 27+1 

def getPageElements(url): 
    content=urllib2.urlopen(url).read() 
    from BeautifulSoup import BeautifulSoup 
    soup = BeautifulSoup(content) 
    elements = soup('dl') 
    return elements 


def savePageElements(elements): 
    for i in elements[0]: 
      try: 
        entry={'type_description':str(i.findNext('dt')).split('-')[1].split('<')[0]\ 
            +i.findNext('a').findNext('a').renderContents(),\ 
            'signature':i.findNext('a').findNext('a').renderContents()+i.findNext('b').renderContents(),\ 
            'description': i.findNext('dd').renderContents()\ 
          } 
        print entry 
        insert_id = mongo_collection.save(entry) 
      except: 
        pass 


def retrieve(str): 
    mongo_documents = mongo_collection.find({ 
    'signature': str, 
    #'type_description':"Method of java.io.PrintStream" 
    }) 
    for this_document in mongo_documents: 
     print this_document 


if __name__=="__main__": 
    for i in range(1,URL_range): 
      #url=URL+str(i)+".html" 
      #print "Processing:", url 
      #elements=getPageElements(url) 
      #print elements[0] 
      #savePageElements(elements) 
      retrieve("println(String)") 

しかし、dexyをご覧ください。 UbuntuでOpenJDKをビルドすることができれば、それは素晴らしいJSONを生成するでしょう。

+0

どのような目的のためにですか? – MadProgrammer

+0

コードとドキュメントの間の "フィーチャロケーション"と "トレーサビリティ"のためのリサーチプロトタイプを構築する。 – Tathagata

+0

バージョンを特定する必要がありますか?つまり、Java 7、Java 6?または、あなたがトレースできるようにする必要があります – MadProgrammer

答えて

2

あなたが書いているように、Eclipseはjavadocを解析し、それをうまく処理します。それは3.2M4に導入されたようです。 Eclipseのソースから機能を抽出し、Eclipseコミュニティでエントリ・ポイントを確認するとよいでしょう。

これでうまくいかない場合、私はあなたの出発点がプレーンなバニラのHTMLパーサーであると思います。

0
  • JavaDocツールの出力を使用して、XMLとしてin this exampleと解析することができます。
  • Doxygenのような他のドキュメント抽出ツールを使用して、(より良い)XML出力を解析することもできます。
  • 基本的なパーサーの知識がある場合は、独自にJavaDoc抽出プログラムを作成できます。無料のJavaパーサーがたくさんあり、それが良い出発点です。 (私はこれがあなたの研究プロトタイプのための最良の方法だと思う)。
1

javadocツールは、ドキュメントには、この構造化された情報を翻訳しドックレットにあなたのJavaファイルと代表者から情報を解析します。標準のドックレットはおなじみのHTML出力を生成しますが、write your ownとすることができ、代わりにjavadocにそれを使用するように指示します。元のソースコードが利用可能であれば、これはおそらく最も堅牢なオプションです。

関連する問題