首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

文档变换程序中的难题

2012-06-30 
文档转换程序中的难题程序输入输出:输入:CHM输出:XML&CHM过程如下:1.读入一个CHM2.获取其中的文件列表,找

文档转换程序中的难题
程序输入输出:

输入:CHM
输出:XML   &   CHM


过程如下:

1.   读入一个   CHM
2.   获取其中的文件列表,找到第一个也是唯一个   HTM   文件,若没有则提示并退出
3.   将   HTM   解压到临时目录(如果能在内存解压更好)
4.   将此   HTM   载入内存成一有固定长度的串(不能说是字符串,因其中可能含有   0x00   造成截短)
5.   通过正则查找该串中的若干个匹配内容,存入串
6.   将串们组织成一个   XML
7.   保存此   XML   到工作目录
8.   读取此   XML   到内存
9.   解析   XML   并将其转换成若干个     HTM
10.   将所得的多个   HTM   保存到临时目录(如能不保存直接打包更好)
11.   将这些   HTM   文件与额外指定的文件一起打包成一个   CHM   文件。


问题:

1.   第二步和第三步如何做?我知道有一些程序能够查看并解压   CHM   中的文件,但它们用了什么库或什么方法?
2.   第五步,使用正则查找我该用什么库或什么方法?
3.   第六步中,将多串组织成一个   XML。我想到的做法,一是用   lstrcpy   和   lstrcat   将串和   XML   的文件碎片接在一起(可能会因为内容有零字节而出问题),二是用   rep   movsb   将串和   XML   的文件碎片接在一起(但总觉得内嵌汇编不好)。有什么更好的方法?
4.   第九步中,解析   XML   并将它转成若干个   HTM。我曾学了一点   XSLT   并与一个引擎程序对   XML   进行过文本转换,但程序中如何实现?我本想这样:将引擎程序作为资源嵌入程序,执行时释放到临时目录,调用它进行转换,此期间程序开启定时器线程并挂起本线程,定时器十秒后再恢复它,然后扫瞄临时目录中的   HTM   文件。但这样太复杂,引擎程序太大,而且还不知道引擎转换的具体用时和顺利与否。有没有更好的方法?
5.   第十一步中,打包成   CHM   如何在程序中实现?用什么库?库怎么用?


本人情况:

1.   会用汇编写简单的   Windows   窗口程序;
2.   会用   VC6   的   C++   写控制台程序,接触过   MFC;
3.   只用过基本的   API,没用过   Boost、   Regex++   之类的库。


打算:

1.   用   C   来实现它,在   VC6   中写,写成   Windows   窗口程序;
2.   它能够运行在   Windows   控制台中;
3.   实现多个   CHM   的批量处理:一是窗口中选择多个文件;二是命令行中接收多个参数。

要实现该程序,需要先解决上面所提到的几个问题。请大家不吝赐教。谢谢。

另:Turbo   2.0   太简单,我只会用它写控制台程序,VS   6.0   又太大,vs.net   就是巨无霸,什么是大家常用的、小的、在   Windows   下用的开发环境?


[解决办法]
微软的hh.exe可以解压缩chm的

热点排行