LingosHook : HTML Optimum

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 >

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

你可能感兴趣的:(LingosHook : HTML Optimum)