是否有以编程方式访问Java documentation的API?类似于Eclipse的编辑器/ IDE为IntelliSense做的事情。当然,javadoc生成的html可以被解析和索引,但是很高兴知道某些东西是否已作为独立包存在。
更新:
为了清楚起见,我试图以编程方式访问java语言实现的文档。但是,没有一个简单的方法,但你必须从Oracle的站点获取openjdk,然后执行make docs
并提供一些doclet以非html格式获取输出。这是我从一开始就试图避免的。所以我现在正在阅读所有的Makefiles,试图找出为什么$ PLATFORM没有得到解决而源代码构建失败了!
我最终解决了什么:
抓取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 :(得分:2)
在编写Eclipse时,它确实解析了javadoc并且做得非常好。它似乎是在3.2M4中引入的。您可以从Eclipse源中提取功能,使用Eclipse社区检查入口点可能是一个很好的起点。
如果这不起作用,我想你的出发点将是一个简单的vanilla HTML解析器。
答案 1 :(得分:1)
javadoc工具从Java文件中解析信息并委托给 doclet ,以将此结构化信息转换为文档。标准doclet生成熟悉的HTML输出,但您可以write your own并告诉javadoc使用它。如果您有可用的原始源代码,这可能是最强大的选项。
答案 2 :(得分:0)