‘HTML Optimum’敲完了,功能作用不多,但代碼敲起來還是滿累啊。。。
這個功能可以指定過濾掉詞典HTML中對于LingosHook無用的數(shù)據(jù),比如鏈接、事件處理等等;以此可以減少LingosHook的數(shù)據(jù)存儲空間,理論上,可以減少15%到100%,看怎么配置了,比如,過濾全部的Tag,Attribute和Value。。。
功能最初來自
LAC項目中的‘Client Data Export’插件,本來沒那么復(fù)雜,應(yīng)用指定過濾那么幾個Tag,Attribute什么的就可以了,但咱就是有‘開放偏執(zhí)癥’--結(jié)果非弄個了個可以配置的對話框來,這樣大家可以根據(jù)自己的喜好來設(shè)置想過濾的內(nèi)容了。。。(蛋疼不。。。)
上圖先。
1. 復(fù)雜的Optimum配置對話框(我覺得是LingosHook所有對話框中最好看的一個。。。 )

HTML中的元素基本來說可以分為三類,Tag,Attribute和Value(注釋不提,LingosHook自動過濾掉了),這個就不多解釋了。在對話框中,將需要過濾(剔除)元素名稱加入到相應(yīng)的列表中即可。需要說明的是,元素名稱是區(qū)分大小寫的。在LingosHook中,所有的Tag都是大寫的,比如要過濾圖片,需要添加的是IMG。
左下的‘Use Default Configuration’按鈕是用于恢復(fù)或者使用應(yīng)用缺省配置的,其過濾配置即為當(dāng)前對話框中的項目,列表如下代碼:
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"));
此按鈕存在的原因是--實際不建議大家自己配置的,因為亂配置有風(fēng)險導(dǎo)致LingosHook無法正常解析數(shù)據(jù)的。。。現(xiàn)在大家知道有多蛋疼了吧 。。。提供配置只是想讓大家看看,LingosHook的HTML處理功能有多猛,而這個HTML解析是咱自己寫的,哇哈哈。。。后面我會貼些不同配置下的解析結(jié)果對比圖,供大家欣賞。
2. Setting頁面中新增的配置項

這個配置目前是缺省開啟的,雖然會導(dǎo)致數(shù)據(jù)入庫變慢點,但可以節(jié)省不少存儲空間啊。。。
下面是不同過濾配置下的對比:
1. 無過濾 : 數(shù)據(jù)庫中HTML數(shù)據(jù)大小為3871字節(jié);

2. 缺省配置:HTML數(shù)據(jù)大小為3162字節(jié);

可以發(fā)現(xiàn),給無過濾情況下,在顯示上是沒有區(qū)別的;
3. 缺省配置加上IMG過濾 : HTML數(shù)據(jù)大小為2221字節(jié);此配置方式即為
LAC數(shù)據(jù)導(dǎo)出配置;

沒圖片,也還好的吧。。。
4. 過濾全部Tag和Attribtue : HTML數(shù)據(jù)大小為179字節(jié);

這種配置,理論上就是提取HTML中的’純文本‘,過程中LingosHook會產(chǎn)生一個異常,因為數(shù)據(jù)不再是HTML格式,解析時會出錯的。
HTML Optimum功能就是這樣的,神奇不。。。
<----意外發(fā)現(xiàn)的分割線---->
分析Lingoes數(shù)據(jù)時,意外發(fā)現(xiàn)實際其應(yīng)該早有添加生詞本的欲望了,只是不知道為什么一直沒有實現(xiàn)。不信,看看下面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>
我以前怎么沒注意呢。。。