Javadoc的chm制作

Javadoc的chm制作

最近看到一篇文章,其中讲述了各种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了。




无人分享的快乐不是真快乐,没人分担的痛苦是真痛苦。

你可能感兴趣的:(Javadoc的chm制作)