Thinking in Java
Java开发技巧与实践
posts - 9,comments - 6,trackbacks - 0

最近看到一篇文章,其中讲述了各种Javadoc生成chm的方法及工具。

其实我一直以来都是使用自己写的一个工具来生成的,不过这个工具只是生成了.hhp、.hhc和.hhk文件,最后还需要使用FAR进行简单的编辑和压缩。不过我的工具可以配置并识别目录中包含多个API目录的情况,并能够将非API的部分生成TOC文件(之所以要使用FAR进行简单的编辑,也是因为非API的TOC部分需要根据情况自己修改或增减)。




上图是我是用这个工具生成的Eclipse 3.5的chm文档。

其实这个过程很简单,我们只需要构造自己的文档解析器,并按照hhp、hhc和hhk格式规范生成相应的文件就行了。其中文档解析器我使用了Java的正则表达式来解析,其解析式的核心如下:

1 public static final String _INDEX_PATTERN = "<DT><A HREF=\"([\\p{Graph}|\\p{Blank}]*?)\"(\\p{Space}\\p{Alpha}+?=\".*?\")?+><B>(.*?)</B></A>(.*?)\\p{Space}-";
2     public static final String _CONTEXT_PATTERN = "<TD><CODE><B><A HREF=\"((\\p{Graph}*?)#(\\p{Graph}*?))\">(.*?)</A></B>(.*?)</CODE>" ;
3     public static final String _TITLE_PATTERN = "<title>(.*?)</title>";

其中第一行是索引文件条目的表达式,这里我是使用了index-files来生成索引的,当然在没有index-files的时候是使用TOC解析出来的条目构建。
第二行是TOC条目的表达式,第三行是提取文件title时使用的表达式。
当然这里表达式是有缺陷的,比如不能解析不严格的HTML标签等等,不过对于我自己而言已经足够应付绝大多数Javadoc了。




无人分享的快乐不是真快乐,没人分担的痛苦是真痛苦。
posted on 2010-01-12 14:22 Feenn 阅读(1171) 评论(4)  编辑  收藏

FeedBack:
# re: Javadoc的chm制作
2010-01-16 11:36 | 李顺利
哥们,能告诉我你文档解析器具体实现吗?
谢谢
我就是写《Javadoc转换chm帮助文档的四种方法总结》的作者,谢谢  回复  更多评论
  
# re: Javadoc的chm制作
2010-01-17 10:46 | Feenn
@李顺利
回复到你邮箱里了  回复  更多评论
  
# re: Javadoc的chm制作
2010-11-02 16:46 | hhk
能给个.hhp、.hhc和.hhk的规范吗?邮箱:hhk1973@163.com  回复  更多评论
  
# re: Javadoc的chm制作
2011-07-11 10:52 | kenhome
这位前辈能把这个具体怎么实现发到我的邮箱里边吗?我的邮箱地址是:7409602122qq.com,谢谢!!我找了很久了···  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: