Thinking in Java
          Java開發(fā)技巧與實(shí)踐
          posts - 9,comments - 6,trackbacks - 0

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

          其實(shí)我一直以來(lái)都是使用自己寫的一個(gè)工具來(lái)生成的,不過(guò)這個(gè)工具只是生成了.hhp、.hhc和.hhk文件,最后還需要使用FAR進(jìn)行簡(jiǎn)單的編輯和壓縮。不過(guò)我的工具可以配置并識(shí)別目錄中包含多個(gè)API目錄的情況,并能夠?qū)⒎茿PI的部分生成TOC文件(之所以要使用FAR進(jìn)行簡(jiǎn)單的編輯,也是因?yàn)榉茿PI的TOC部分需要根據(jù)情況自己修改或增減)。




          上圖是我是用這個(gè)工具生成的Eclipse 3.5的chm文檔。

          其實(shí)這個(gè)過(guò)程很簡(jiǎn)單,我們只需要構(gòu)造自己的文檔解析器,并按照hhp、hhc和hhk格式規(guī)范生成相應(yīng)的文件就行了。其中文檔解析器我使用了Java的正則表達(dá)式來(lái)解析,其解析式的核心如下:

          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>";

          其中第一行是索引文件條目的表達(dá)式,這里我是使用了index-files來(lái)生成索引的,當(dāng)然在沒(méi)有index-files的時(shí)候是使用TOC解析出來(lái)的條目構(gòu)建。
          第二行是TOC條目的表達(dá)式,第三行是提取文件title時(shí)使用的表達(dá)式。
          當(dāng)然這里表達(dá)式是有缺陷的,比如不能解析不嚴(yán)格的HTML標(biāo)簽等等,不過(guò)對(duì)于我自己而言已經(jīng)足夠應(yīng)付絕大多數(shù)Javadoc了。




          無(wú)人分享的快樂(lè)不是真快樂(lè),沒(méi)人分擔(dān)的痛苦是真痛苦。
          posted on 2010-01-12 14:22 Feenn 閱讀(1215) 評(píng)論(4)  編輯  收藏

          FeedBack:
          # re: Javadoc的chm制作
          2010-01-16 11:36 | 李順利
          哥們,能告訴我你文檔解析器具體實(shí)現(xiàn)嗎?
          謝謝
          我就是寫《Javadoc轉(zhuǎn)換chm幫助文檔的四種方法總結(jié)》的作者,謝謝  回復(fù)  更多評(píng)論
            
          # re: Javadoc的chm制作
          2010-01-17 10:46 | Feenn
          @李順利
          回復(fù)到你郵箱里了  回復(fù)  更多評(píng)論
            
          # re: Javadoc的chm制作
          2010-11-02 16:46 | hhk
          能給個(gè).hhp、.hhc和.hhk的規(guī)范嗎?郵箱:hhk1973@163.com  回復(fù)  更多評(píng)論
            
          # re: Javadoc的chm制作
          2011-07-11 10:52 | kenhome
          這位前輩能把這個(gè)具體怎么實(shí)現(xiàn)發(fā)到我的郵箱里邊嗎?我的郵箱地址是:7409602122qq.com,謝謝!!我找了很久了···  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 河间市| 延川县| 通海县| 鹤岗市| 赣州市| 大港区| 涪陵区| 同德县| 石城县| 尉氏县| 江北区| 尼玛县| 铁力市| 灌阳县| 平乐县| 江门市| 白银市| 新宾| 霸州市| 巧家县| 松滋市| 尉氏县| 盱眙县| 和龙市| 海原县| 上林县| 锡林郭勒盟| 耒阳市| 望奎县| 旬邑县| 阜阳市| 两当县| 诸暨市| 个旧市| 承德市| 西峡县| 仁寿县| 高尔夫| 同德县| 泾源县| 罗城|