Codejie's C++ Space

Using C++

LingosHook : HTML Optimum


    ‘HTML Optimum’敲完了,功能作用不多,但代码敲起来还是满累啊。。。
    这个功能可以指定过滤掉词典HTML中对于LingosHook无用的数据,比如链接、事件处理等等;以此可以减少LingosHook的数据存储空间,理论上,可以减少15%到100%,看怎么配置了,比如,过滤全部的Tag,Attribute和Value。。。
    功能最初来自LAC项目中的‘Client Data Export’插件,本来没那么复杂,应用指定过滤那么几个Tag,Attribute什么的就可以了,但咱就是有‘开放偏执症’--结果非弄个了个可以配置的对话框来,这样大家可以根据自己的喜好来设置想过滤的内容了。。。(蛋疼不。。。)

    上图先。

    1. 复杂的Optimum配置对话框(我觉得是LingosHook所有对话框中最好看的一个。。。 )


    HTML中的元素基本来说可以分为三类,Tag,Attribute和Value(注释不提,LingosHook自动过滤掉了),这个就不多解释了。在对话框中,将需要过滤(剔除)元素名称加入到相应的列表中即可。需要说明的是,元素名称是区分大小写的。在LingosHook中,所有的Tag都是大写的,比如要过滤图片,需要添加的是IMG。

    左下的‘Use Default Configuration’按钮是用于恢复或者使用应用缺省配置的,其过滤配置即为当前对话框中的项目,列表如下代码:
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_TAG, wxT("A"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_TAG, wxT("PARAM"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_TAG, wxT("EMBED"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_TAG, wxT("OBJECT"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_ATTRIB, wxT("class"));    
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_ATTRIB, wxT("title"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_ATTRIB, wxT("onclick"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_ATTRIB, wxT("onmouseout"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_ATTRIB, wxT("onmouseup"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_ATTRIB, wxT("onmousedown"));
    CDocumentOutputObject::AddKey(&m_mapHtmlOptimumKey, CDocumentOutputObject::KT_ATTRIB, wxT("onselectstart"));
   
    此按钮存在的原因是--实际不建议大家自己配置的,因为乱配置有风险导致LingosHook无法正常解析数据的。。。现在大家知道有多蛋疼了吧 。。。提供配置只是想让大家看看,LingosHook的HTML处理功能有多猛,而这个HTML解析是咱自己写的,哇哈哈。。。后面我会贴些不同配置下的解析结果对比图,供大家欣赏。

    2. Setting页面中新增的配置项

    这个配置目前是缺省开启的,虽然会导致数据入库变慢点,但可以节省不少存储空间啊。。。


    下面是不同过滤配置下的对比:

    1. 无过滤 : 数据库中HTML数据大小为3871字节; 



    2. 缺省配置:HTML数据大小为3162字节;

    可以发现,给无过滤情况下,在显示上是没有区别的;

    3. 缺省配置加上IMG过滤 : HTML数据大小为2221字节;此配置方式即为LAC数据导出配置;

    没图片,也还好的吧。。。

    4. 过滤全部Tag和Attribtue : HTML数据大小为179字节;


    这种配置,理论上就是提取HTML中的’纯文本‘,过程中LingosHook会产生一个异常,因为数据不再是HTML格式,解析时会出错的。

    HTML Optimum功能就是这样的,神奇不。。。

<----意外发现的分割线---->
    分析Lingoes数据时,意外发现实际其应该早有添加生词本的欲望了,只是不知道为什么一直没有实现。不信,看看下面HTML代码。。。
<TD><IMG style="MARGIN-TOP: 0px; MARGIN-LEFT: 0px" id="dict_remberword_E1C27E806399D047822B6650194A3D32" onmouseup="this.style.marginLeft = '-11px'" onmouseover="this.style.marginLeft = '-11px'" title="Add the word to notebook" onmouseout="this.style.marginLeft = '0px'" onmousedown="this.style.marginLeft = '-11px'" onclick="window.navigate('app://remberword/E1C27E806399D047822B6650194A3D32-4') ;" border="0" src="file:///C:/Program%20Files%20(x86)/Lingoes/Translator2/dict/image/remberword.png" width="22" height="11"></TD>

    我以前怎么没注意呢。。。

posted on 2012-05-16 15:09 codejie 阅读(1272) 评论(0)  编辑 收藏 引用 所属分类: LingosHook


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜