‘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>
我以前怎么没注意呢。。。