﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Codejie's C++ Space-随笔分类-LingosHook</title><link>http://www.cppblog.com/codejie/category/13873.html</link><description>Using C++</description><language>zh-cn</language><lastBuildDate>Mon, 07 Apr 2014 15:33:07 GMT</lastBuildDate><pubDate>Mon, 07 Apr 2014 15:33:07 GMT</pubDate><ttl>60</ttl><item><title>LingosHook : WordExport Update</title><link>http://www.cppblog.com/codejie/archive/2013/10/30/203982.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 29 Oct 2013 16:06:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/10/30/203982.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/203982.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/10/30/203982.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/203982.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/203982.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 上上上周, 一'深度用户'来信, 来QQ (没来电)说: 导出的单词能高亮不? 解释能往后点不? 词典标题能加个底色不? 能在单词前加个序号不? 能....不? </p> <p>&nbsp;&nbsp;&nbsp; 我回答 : 不能.</p> <p>&nbsp;&nbsp;&nbsp; '深度用户'说: 我还会回来的...</p> <p>&nbsp;&nbsp;&nbsp; 我回答: 能, 都能...</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 好吧, 我欺骗了他 -- 因为最终我只搞定了'深度用户'的部分要求, 原谅我吧, 其它的真的太'复杂'了...</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 于是, 非常'感谢'这位'深度用户', 时隔一年, 真的是正好一年啊, WordExport又一次迎来了更新...</p> <p>&nbsp;&nbsp;&nbsp; 1. 单HTML方式导出时, 支持一定的自定义格式输出;</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 在选择单HTML文件方式导出时, 如下图所示, 可以指定输出时的单词大小, 颜色, 背景和风格, 以及解释的缩进值.</p> <p>&nbsp;</p> <p><img title="lingoshook-we" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="lingoshook-we" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/LingosHook-_1451E/lingoshook-we_bd99aee8-3f1c-45fc-aef8-6ebeb526260a.png" width="673" height="548" /></p> <p><img title="lingoshook-we-1" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="lingoshook-we-1" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/LingosHook-_1451E/lingoshook-we-1_b1eff837-7334-4d6e-818c-ea2620b8e2f7.png" width="510" height="635" /></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 如若自定义某些数值时, 直接参考可选值中的括号中的部分内容输入即可. 下面是当'Font Size'值为'40pt'时, 输出格式如下所示:</p> <p><img title="lingoshook-we-2" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="lingoshook-we-2" src="http://www.cppblog.com/images/cppblog_com/codejie/Windows-Live-Writer/LingosHook-_1451E/lingoshook-we-2_8efc7766-8098-4a71-a1f7-080be85045b5.png" width="431" height="354" /></p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 单词导出插件的具体用法请<a href="http://www.cppblog.com/codejie/archive/2012/05/30/176762.html">参考这里</a>, 下载还是在<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里</a>, 源码还是点<a href="https://code.google.com/p/lingoshook/">这里</a>.</p> <p>&nbsp;</p> <p>&lt;---- 今天晚归, 没喝酒, 但还是有些兴奋的分割线 ----&gt;</p> <p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 再次感谢'深度用户'Jack, 也很抱歉长久没有更新LingosHook, 除了没有新需求, 更多的是 -- 更多的时间拿去玩<a href="http://www.cppblog.com/codejie/category/15382.html">android</a> (比如<a href="http://www.cppblog.com/codejie/archive/2012/08/02/164888.html">LAC</a>, <a href="http://www.cppblog.com/codejie/archive/2013/08/24/202526.html">EL</a>), 或是<a href="http://www.cppblog.com/codejie/category/20708.html">其它项目</a>了. 这里再次感谢各位使用LingosHook, 虽然没有更新, 但我会一如既往地接受和回答大家的建议与问题.</p><img src ="http://www.cppblog.com/codejie/aggbug/203982.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-10-30 00:06 <a href="http://www.cppblog.com/codejie/archive/2013/10/30/203982.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : LingosHook的x64版也来了</title><link>http://www.cppblog.com/codejie/archive/2013/04/24/199667.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 23 Apr 2013 16:37:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/04/24/199667.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/199667.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/04/24/199667.html#Feedback</comments><slash:comments>59</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/199667.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/199667.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 几个晚上的奋战,LingosHook x64版可以见人了...<br />&nbsp; &nbsp; 这个版本是在LingosHook v1.6.700上修改了,主要更改了HOOK库部分,哎,64位的HWND就是不一样,长了很多,导致无法定位.开始以为是API改了,后来发现走错路了,API一个没变,只是所有整数变成64位了...<br /><br />&nbsp; &nbsp; 实际没有全部改好,<span style="color: #ff0000;">所有的插件都不能正常使用</span>,错误出现在插件dll访问数据库是异常,这个问题还没定位,不知道是64位不允许dll远程访问,还是使用的wxSQLite库不支持这种访问方式;不论哪个,我都怕一时搞不定了...所以,请偏执于x64,喜欢尝鲜,且不用插件的同学们,<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里下载</a>...<br /><br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-x64.png" border="0" alt="" width="540" height="441" /><br /><br />&nbsp; &nbsp; 除了插件问题说明下外,还有就是再强调下,这个版本只能<span style="color: #ff0000;">同Lingoes的x64版本使用</span>,x86的是没法Hook上的.&nbsp;<br /><br />&nbsp; &nbsp; 不知道算不算故意吐槽,x64版本的Lingoes在我的D版Win7上不是很稳定,经常跟LingosHook一起把explorer.exe搞死,这个有点猛哦...<br /><br />&nbsp; &nbsp; (估计x64的问题多多,但大家先玩着这个,容我再多点时间敲LAC啊...)&nbsp;&nbsp;&nbsp;<br />&nbsp; &nbsp;&nbsp;<img src ="http://www.cppblog.com/codejie/aggbug/199667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-04-24 00:37 <a href="http://www.cppblog.com/codejie/archive/2013/04/24/199667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Lingoes的x64版来了</title><link>http://www.cppblog.com/codejie/archive/2013/04/19/199573.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 19 Apr 2013 14:43:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/04/19/199573.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/199573.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/04/19/199573.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/199573.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/199573.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 一周不在线,Lingoes变成2.9.1了...不过也正常,一般新版本发布后马上就会来个"补丁版"...至少我是经常这样的...<br /><br />&nbsp; &nbsp; 是刚到家查看blog时,才发现Lingoes升级了,有跟帖说LingosHook没法Hook住新版了...我一直担心这个,不过一般'补丁'不会太大变化的,想来应该是个例.但还是赶紧下载来试试.一试啊,果然有不兼容问题了...<br />&nbsp; &nbsp; Lingoes出了个x64版,LingosHook是不支持64位版本的.为啥呢,简单啊,因为咱这水平,可以说完全'搞不清'什么x86,x64的区别...<br />&nbsp; &nbsp; 细想来应该是API有差异,还好,LingosHook还能继续兼容2.9.1的非x64版...哎,找个时间google下Hook相应的x64的APIs吧,希望只是API问题,不然只能再发个帖子说咱LingosHook不支持x64了...<br />&nbsp; &nbsp; (说到google,就想起以前的一个吐槽来,意思是说,google让程序员的世界变平了...)<img src ="http://www.cppblog.com/codejie/aggbug/199573.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-04-19 22:43 <a href="http://www.cppblog.com/codejie/archive/2013/04/19/199573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Demo Dictionary v2</title><link>http://www.cppblog.com/codejie/archive/2013/04/06/199142.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sat, 06 Apr 2013 03:29:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/04/06/199142.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/199142.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/04/06/199142.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/199142.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/199142.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 这几个晚上,为了自己过几天的需求,也为了研究下后面的LAC2,给LAC的Native Dictoinary的Demo应用增加了如下功能:<br /><br />&nbsp; &nbsp; 1. 支持多词典:增加了对Vicon Chinese-English Dictionary;<br />&nbsp; &nbsp; 2. 支持了TTS:可以发音了,但还只能说English;<br />&nbsp; &nbsp; 3. 支持XSL方式输出:可以方便定义输出格式了;<br /><br />&nbsp; &nbsp; 上图了.<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-d2.png" /> <img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-d1.png" /><br /><br /><br />&nbsp;&nbsp;&nbsp; 就这两张图了,临时修改,没啥大的变化,就输出格式边了,点击单词会发音;其他的请看 <a href="http://www.cppblog.com/codejie/archive/2013/02/13/197822.html">Demo V1 </a>的说明了.<br /><br />&nbsp;&nbsp;<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">&nbsp; 老地方</a>下载,安装时请<strong>卸载前一个版本</strong>,如果安装了...<br /><br /><br /><br /><br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/199142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-04-06 11:29 <a href="http://www.cppblog.com/codejie/archive/2013/04/06/199142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Lingoes.XSL</title><link>http://www.cppblog.com/codejie/archive/2013/04/03/199083.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 03 Apr 2013 15:43:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/04/03/199083.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/199083.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/04/03/199083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/199083.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/199083.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 这两天晚上在忙着修改LAC的Navite Dictionary演示程序,添加对多词典的支持;一来可以为后面LAC2的开发积累点经验,二来,也是主要原因是下个月我自己可能要用到...唉,自己敲的app,实际自己使用的时间不如敲打时间的百分之一...<br /><br />&nbsp; &nbsp; 这次支持了中文Vicon词典,敲字过程中碰到曾经没有考虑到很多问题,卡了我很多天.目前看除了那个DES加密破解不了外,像字符集编码,XML输出什么的都还能搞定,应该可以拿到LAC2中直接用了.当然那个cursor.MoveToFirst()死慢的问题估计需要到时重新设计下数据库表来解决了...<br /><br />&nbsp; &nbsp; 今天记录下对XSL的认识,唉,XML认识了那么久,从来没有好好静心研究过,这次算碰到钉子了...也好,搞明白了这个,在也不用自己分解XML再拼串输出了...不论对不对,贴上再说...(只是个draft,就给我自己看的..)<br /><br />&nbsp; &nbsp; 更新下,来张图先,使用xslt输出xml还是很cool的啊..(这单词代表我的心...)<br /><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-xslt.png" /><br /><br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:stylesheet&nbsp;</span><span style="color: #ff0000">version</span><span style="color: #0000ff">="1.0"</span><span style="color: #ff0000">&nbsp;xmlns:xsl</span><span style="color: #0000ff">="http://www.w3.org/1999/XSL/Transform"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:output&nbsp;</span><span style="color: #ff0000">method</span><span style="color: #0000ff">='html'&nbsp;</span><span style="color: #ff0000">version</span><span style="color: #0000ff">='1.0'&nbsp;</span><span style="color: #ff0000">encoding</span><span style="color: #0000ff">='UTF-8'&nbsp;</span><span style="color: #ff0000">indent</span><span style="color: #0000ff">='yes'/&gt;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #ff0000">&lt;xsl:template&nbsp;match</span><span style="color: #0000ff">="<a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a>"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="W"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SPAN&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="LINE-HEIGHT:&nbsp;150%;&nbsp;COLOR:&nbsp;#000000;&nbsp;FONT-SIZE:&nbsp;180%"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">SPAN</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="D"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="LINE-HEIGHT:&nbsp;120%;&nbsp;background-color:#cfddf0;&nbsp;COLOR:#000080;&nbsp;FONT-SIZE:&nbsp;100%"</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="C"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:for-each&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="F"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;5px&nbsp;0px"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:for-each</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:if&nbsp;</span><span style="color: #ff0000">test</span><span style="color: #0000ff">="E"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px;&nbsp;LINE-HEIGHT:&nbsp;150%;&nbsp;FONT-SIZE:&nbsp;100%"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Extension:</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">B</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">FONT&nbsp;</span><span style="color: #ff0000">COLOR</span><span style="color: #0000ff">="#229922"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:for-each&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="E"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:for-each</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">FONT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:if</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="H"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SPAN&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="LINE-HEIGHT:&nbsp;120%;&nbsp;COLOR:&nbsp;#000000;&nbsp;FONT-SIZE:&nbsp;120%"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SPAN</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="L"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px;&nbsp;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="M"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">FONT&nbsp;</span><span style="color: #ff0000">COLOR</span><span style="color: #0000ff">="#009900"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">FONT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">]<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="I"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;0px&nbsp;0px&nbsp;5px"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="N"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">DIV&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="MARGIN:&nbsp;4px&nbsp;0px;&nbsp;LINE-HEIGHT:&nbsp;120%;&nbsp;FONT-SIZE:&nbsp;120%"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">DIV</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="U"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">FONT&nbsp;</span><span style="color: #ff0000">color</span><span style="color: #0000ff">="#c00000"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">FONT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="x"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:apply-templates</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:template&nbsp;</span><span style="color: #ff0000">match</span><span style="color: #0000ff">="h"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">I</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">xsl:value-of&nbsp;</span><span style="color: #ff0000">select</span><span style="color: #0000ff">="."</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">I</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:template</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">xsl:stylesheet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" alt="" /></span></div><img src ="http://www.cppblog.com/codejie/aggbug/199083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-04-03 23:43 <a href="http://www.cppblog.com/codejie/archive/2013/04/03/199083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook: Met Leifeng</title><link>http://www.cppblog.com/codejie/archive/2013/03/15/198450.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 15 Mar 2013 11:53:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/03/15/198450.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/198450.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/03/15/198450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/198450.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/198450.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; LingosHook一直没有个使用说明,或者帮助文档什么的,这个问题从0.1.0版本就存在,但我就是装作看不见...<br />
&nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp; 今天终于有人发飙了...<br /><br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><br />
<span>老大，抽空给您的程序录了个视频，恳请不吝指教！</span><br />
&nbsp;<br />
<a href="http://v.youku.com/v_show/id_XNTI3MDc1ODQw.html"><span>http:</span><span>//</span><span>v.youku.com/v_show/id_XNTI3MDc1ODQw.html<br /><br /></span></a><span>Andy</span></div><br />&nbsp; &nbsp; 这,这..这是什么样的精神啊...于是我平静地回复到...<br /><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br />Andy,<br />&nbsp; &nbsp; 兄弟,让我说啥呢<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />你简直就是雷锋同志再世啊<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />.<br />&nbsp; &nbsp; 太激动了,无法冷静看视频<img src="http://www.cppblog.com/Images/dot.gif"  alt="" /><br /><br />Thanks,<br />Jie.</div><br />&nbsp; &nbsp; 非常感谢...<br /><img src ="http://www.cppblog.com/codejie/aggbug/198450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-03-15 19:53 <a href="http://www.cppblog.com/codejie/archive/2013/03/15/198450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Demo Dictionay v1</title><link>http://www.cppblog.com/codejie/archive/2013/02/13/197822.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 13 Feb 2013 14:08:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/02/13/197822.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/197822.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/02/13/197822.html#Feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/197822.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/197822.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 明日回家,紧赶慢赶下,LAC的Native Dictionary演示版终于敲好了,请到<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">老地方下载</a>啊...<br /><br />&nbsp; &nbsp; 下载安装DemoDictionayOfLAC2.apk(这名字又怪又长啊..)后,可见如下图标:<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_icon.png" border="0" alt="" width="130" height="141" /><br />&nbsp; &nbsp;&nbsp;<br /><br />&nbsp; &nbsp; 第一次运行时,LAC要解压两个文件到SD卡中,时间大约需要5秒左右,这还是在我的G7上,估计你的就是一闪而过,完全没感觉啊...<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_unzip.png" border="0" alt="" width="240" height="400" /><br /><br />&nbsp; &nbsp;&nbsp;然后就是主界面了.因为这个还只是个Demo,所以加了个超期时间,给各位'催'我加班加点个理由...<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_demo_main.png" border="0" alt="" width="240" height="400" /><br /><br /><br />&nbsp; &nbsp; 当前只有内置词典,LAC的核心的记忆,导入什么的,都还没有敲呢...<br /><br />&nbsp; &nbsp; 点击主界面,应用切换到单词列表界面.<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_demo_list.png" border="0" alt="" width="240" height="400" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_demo_list1.png" border="0" alt="" width="240" height="400" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_demo_list2.png" border="0" alt="" width="240" height="400" /><br /><br /><br />&nbsp; &nbsp; 上图中,在输入框中输入字母,应用将立即搜索以此为前缀的单词,并列举出来.点击输入框后的按钮,将清除所有输入.每次大约显示25条记录,向上拖动列表,界面下方将显示'Release to load...'提示,此时松开拖动,应用将加载其后单词数据.(多说一点,这个支持'release to load'的listview是俺自己写的,不信看<a href="http://www.cppblog.com/codejie/archive/2012/09/14/190565.html">这里</a>.)<br /><br />&nbsp; &nbsp; 点击任意单词记录,界面切换至其解释数据页面.<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_d_3.png" border="0" alt="" width="240" height="400" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_d_1.png" border="0" alt="" width="240" height="400" /><br />&nbsp; &nbsp; 在此界面中,点击任何地方,应用将返回到前面单词列表界面.(不要用返回钮,那会退出应用的...)<br /><br />&nbsp; &nbsp; 就这些,俺终于实现了将Lingoes数据移植到Android上了(版权什么的先不说了...),哇哈哈...来尝鲜的,<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里下载</a>!<img src ="http://www.cppblog.com/codejie/aggbug/197822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-02-13 22:08 <a href="http://www.cppblog.com/codejie/archive/2013/02/13/197822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: The Preview of Native Dictionary</title><link>http://www.cppblog.com/codejie/archive/2013/02/12/197809.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 12 Feb 2013 13:33:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/02/12/197809.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/197809.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/02/12/197809.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/197809.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/197809.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 今日不吐槽,大过年的,希望各位都快乐...就刚跟同学说的--"保持快乐的心情,啥事过完年再说了."<br /><br />&nbsp; &nbsp; 所以,再传四张LAC的Native Dictionary演示版截图,希望能给各位在这愉快的节日里再些开心的理由.<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_d_4.png" border="0" alt="" width="240" height="400" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_d_3.png" border="0" alt="" width="240" height="400" /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_d_2.png" border="0" alt="" width="240" height="400" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac2_d_1.png" border="0" alt="" width="240" height="400" /><br /><br /><br />&nbsp; &nbsp; 四张截图展示了对LD2不同字段数据的处理,如何?打开Linoges对比下,像不像?咱还多了个'extension'段呢.嘿嘿...<br /><br />&lt;---- 多聊几句的分割线 ----&gt;<br /><br />&nbsp; &nbsp; 今日能发帖,得益于俺在老婆这小山村中搭设了WIFI网络,哇哈哈...<br />&nbsp; &nbsp; 当处于,一个收音机收不到信号的山村中,一个只有十几户的山村中,一个大年初二去其县城都买不到网线的山村中,却在搜索时发现另外一个网络标识闪闪地跳跃,那真的是一种惊喜,一种孤岛收到家信的惊喜...<br /><img src ="http://www.cppblog.com/codejie/aggbug/197809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-02-12 21:33 <a href="http://www.cppblog.com/codejie/archive/2013/02/12/197809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : The Preview of Native Dictionary </title><link>http://www.cppblog.com/codejie/archive/2013/01/15/197302.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 15 Jan 2013 15:56:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/01/15/197302.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/197302.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/01/15/197302.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/197302.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/197302.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 今天是来秀当前LAC Native Dictionary的Demo应用的进展情况,顺便吐槽下...(好吧,实际今天就是来吐槽的..)<br /><br />&nbsp; &nbsp; 老规矩,先上图了~<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/ddoflac2_main.png" border="0" alt="" width="182" height="299" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/ddoflac2_abit.png" border="0" alt="" width="185" height="302" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/ddoflac2_zoo.png" border="0" alt="" width="182" height="301" /><br /><br />&nbsp; &nbsp; 当前Demo应用的基本架子和功能点都算完成了,等真正敲完估计就界面上再来点变化了...这次不鼓励大家提建议了,看吐槽先吧...<br /><br />&nbsp; &nbsp; (下面就是吐槽了...)<br /><br />&nbsp; &nbsp; 真的冷死了...怎么说呢?好吧--<strong>我本是一只来自北方的狼,在南方的冬天里</strong><strong>愣是</strong><strong>冻成了猴...</strong><br /><br />&nbsp; &nbsp; 这段时间可爱的宝宝越睡越早,而我却越睡越晚了,因此冬日的夜变得越来越长...按理应该有更大把的时间挥霍到敲字中,但~~冻僵的双手握着零下(室内)的刻度板,依然坚持刷'jandan',刷'wow',就是不敲一行LAC代码...<br />&nbsp; &nbsp; 不知为何,换了环境以后,反而失去了更多的往日激情,越来越多的是对自己这样敲字的怀疑和迷茫,每个冬夜都是在这种纠结中,敲打寥寥数行代码便草草commit了...<br /><br />&nbsp; &nbsp; 是因为全年没有做一个项目吗?<br />&nbsp; &nbsp; 是因为新的工作压力吗?<br />&nbsp; &nbsp; 是因为担忧自己的未来吗?<br />&nbsp; &nbsp; ...<br /><br />&nbsp; &nbsp; 有时真的担心沉沦在这种茫然中的我会不会'精神崩溃'...当然,也许只会是个'精神分裂'而已..唉...<br /><br />&nbsp; &nbsp; 希望这一切只是冬日带来的'淡淡忧伤'而已...这忧伤真的很伤人...<br />&nbsp; &nbsp; 希望自己尽快回归到'疯狂'敲字的时空中来...这时空穿越的不对...<br /><br />&nbsp; &nbsp; 这一切还只能靠自己'强大的精神力量'来纠正~~吐槽就是一种反击!<br /><br />&nbsp; &nbsp;&nbsp;吐槽结束~很抱歉LAC的这个Native Dictionary Demo应用拖拖拉拉这么久,咱们把责任推给这'冻成猴'的冬夜,会不会是个好理由呢?嘿嘿...<br />&nbsp; &nbsp; 好吧,无论怎样,哪怕是满手冻疮,我都保证敲完这个Demo!!! (透露个个人隐私----经历这么这么多的敲字的冬夜,咱竟然从没生过冻疮,嫉妒羡慕恨吗?嘿嘿...)<br /><br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/197302.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-01-15 23:56 <a href="http://www.cppblog.com/codejie/archive/2013/01/15/197302.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook: Release 1.6.700</title><link>http://www.cppblog.com/codejie/archive/2013/01/07/197089.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 07 Jan 2013 14:16:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2013/01/07/197089.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/197089.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2013/01/07/197089.html#Feedback</comments><slash:comments>50</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/197089.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/197089.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 今天jan贴了张帖子:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all">发现个有越的现象,在index的页面下,做copy&nbsp;to&nbsp;tag&nbsp;的操作时,会有问题<br />
个人遇到3次报错退出,一次没报错,但没词</div>
<br />&nbsp; &nbsp; 我如常般地积极回复了...<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@jan<br />呀,这现象真'有趣',那就是个bug啊<img src="http://www.cppblog.com/Images/dot.gif" alt="" />回家我看看去啊<img src="http://www.cppblog.com/Images/dot.gif" alt="" />谢谢啊<img src="http://www.cppblog.com/Images/dot.gif" alt="" /></div>&nbsp; &nbsp; (以上内容有删节,原文在<a href="http://www.cppblog.com/codejie/archive/2013/01/04/196956.html">这里</a>.)<br /><br />&nbsp; &nbsp; 于是呢,就有了这个<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">1.6.700版本</a>了...<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; 1.修正Index页面下,使用'copy to tag'菜单时崩溃问题.<br /><br />&nbsp; &nbsp; 这个bug是在1.6.618版本中引入的,具体说是从<a href="http://code.google.com/p/lingoshook/source/browse/branches#branches%2F1.5.000">rev155</a>开始的,应该是看到在index页面与classifications页面中相同的菜单用了两套代码,一时糊涂,顺手copy成一样了...忘记了在两个页面中所使用的'索引控件'是不一样的...<br /><br />&nbsp; &nbsp; 按照计划,LingosHook到现在是该再有个版本了,但,唉,不说啥了,真的不只是有点懒啊...借此机会,升个版本,继续给自己个懒下去的理由...嘿嘿..谢谢jan,希望修复了你的问题.<div><embed id="lingoes_plugin_object" type="application/lingoes-npruntime-capture-word-plugin" hidden="true" width="0" height="0"></div><img src ="http://www.cppblog.com/codejie/aggbug/197089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2013-01-07 22:16 <a href="http://www.cppblog.com/codejie/archive/2013/01/07/197089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : The secret of ld2</title><link>http://www.cppblog.com/codejie/archive/2012/12/03/195952.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 03 Dec 2012 15:14:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/12/03/195952.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/195952.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/12/03/195952.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/195952.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/195952.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 这几个晚上(周末除外)都在分解<a href="https://code.google.com/p/lingoes-extractor/">Lingoes-Extractor</a>作者的另外一个工程的代码, 同样是用于分析LD2文件的,但仅仅一个java文件就搞定了,对于我这样的JAVA初学者来说真是'太好了'...<br />
&nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp; 从第一次找到Extractor的代码起,我就一直很怀疑这位作者要不跟Lingoes有点关系,要不就是一位真正的破解大师...因为Extractor太完美了...代码不多,却非常清晰地标记并分解出了LD2的各个段的数据,以及数据间的关系...我的怀疑来自其对ld2文件格式的认识,每一段,每一个字节的意义都非常地准确地标示出来,更神奇的是那些'无从追踪'的魔数, 例如, 单词索引间隔固定为10, 14字节的索引数据块,等等...这些都是怎么推到出来的啊...<br />
<br />
&nbsp; &nbsp; 我对自己的怀疑更偏向于后者,因为通过查看作者的其他代码,其除了分解了ld2文件外,还包括其他多个词典的数据文件...(感到震惊的同学们,自己去围观吧...另,多说一句,googlecode.com是个好地方...)<br />
<br />
&nbsp; &nbsp; 我并不关心怀疑本身的答案, 因为我已经非常开心 --Extractor终让我有机会窥视到Lingoes的ld2文件的秘密...<br />
<br />
&nbsp; &nbsp; 贴段代码, 以'奖励'自己多夜的敲敲打打...(是我写的Java代码,表认真啊...)<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&nbsp; &nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;getData(<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;index)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;IOException&nbsp;{<br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RandomAccessFile&nbsp;file&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;RandomAccessFile("output.data",&nbsp;"r");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;ByteBuffer&nbsp;buf&nbsp;=&nbsp;ByteBuffer.allocate((<span style="color: #0000FF; ">int</span>)&nbsp;file.getChannel().size());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.getChannel().read(buf);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf.order(ByteOrder.LITTLE_ENDIAN);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;offset&nbsp;=&nbsp;29;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;idx[]&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">int</span>[6];<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getIndex(buf,&nbsp;offset&nbsp;*&nbsp;10,&nbsp;idx);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(idx[5]&nbsp;!=&nbsp;idx[1])&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("self&nbsp;xml&nbsp;=&nbsp;"&nbsp;+&nbsp;getXml(buf,&nbsp;idx[1],&nbsp;idx[5]&nbsp;-&nbsp;idx[1]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(idx[3]&nbsp;==&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("word&nbsp;=&nbsp;"&nbsp;+&nbsp;getWord(buf,&nbsp;idx[0],&nbsp;idx[4]&nbsp;-&nbsp;idx[0]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ref&nbsp;=&nbsp;idx[3];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;offsetword&nbsp;=&nbsp;idx[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;lenword&nbsp;=&nbsp;idx[4]&nbsp;-&nbsp;idx[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(ref&nbsp;--&nbsp;&gt;&nbsp;0)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;=&nbsp;buf.getInt(lenInflatedWordsIndex&nbsp;+&nbsp;idx[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getIndex(buf,&nbsp;offset&nbsp;*&nbsp;10,&nbsp;idx);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("ref("&nbsp;+&nbsp;offset&nbsp;+&nbsp;")&nbsp;xml&nbsp;=&nbsp;"&nbsp;+&nbsp;getXml(buf,&nbsp;idx[1],&nbsp;idx[5]&nbsp;-&nbsp;idx[1]));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offsetword&nbsp;+=&nbsp;4;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output("word&nbsp;=&nbsp;"&nbsp;+&nbsp;getWord(buf,&nbsp;offsetword,&nbsp;lenword));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br /><br />&nbsp; &nbsp; 再整理几天,要能琢磨个LAC2直接使用ld2的法子来的话,那就又可以进一大步了啊...<img src ="http://www.cppblog.com/codejie/aggbug/195952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-12-03 23:14 <a href="http://www.cppblog.com/codejie/archive/2012/12/03/195952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : Using Python to generate database</title><link>http://www.cppblog.com/codejie/archive/2012/11/01/194150.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 01 Nov 2012 03:28:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/11/01/194150.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/194150.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/11/01/194150.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/194150.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/194150.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 是的,这两天我在玩Python!<br />
<br />
&nbsp; &nbsp; 为了给LAC添加内置的词典, 需要将通过Lingoes-Extractor解出的数据导入到LAC使用的Sqlite中. 这个过程并不复杂 -- 解开ld2文件数据输出每条记录到一个文本文件中,然后处理每一条记录导入到Sqlite中即可,要是用C++来实现,也就两个晚上的事情,但,但这次我又蛋疼了...<br />
<br />
&nbsp; &nbsp; 大约一个月前,工作中碰到一段Python脚本,对于我这样习惯C++的人来说,看类似Python脚本跟天书差不多了...虽然上半年看了几天Perl,但到今天也只记得名字了...<br />
&nbsp; &nbsp; 于是这次'痛定思痛',决定搞起一个脚本语言来.于是就有了这次蛋疼的事情 -- 用Python实现LD2到Sqlite的导入.<br />
<br />
&nbsp; &nbsp; 不多说,有兴趣的直接看Python脚本吧...<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_110105" onclick="this.style.display='none'; Code_Closed_Text_110105.style.display='none'; Code_Open_Image_110105.style.display='inline'; Code_Open_Text_110105.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_110105" style="display: none" onclick="this.style.display='none'; Code_Open_Text_110105.style.display='none'; Code_Closed_Image_110105.style.display='inline'; Code_Closed_Text_110105.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_110105" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">htmlparser.py</span><span id="Code_Open_Text_110105" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;!/usr/bin/python</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;coding:utf-8</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">import</span>&nbsp;string<br />
<span style="color: #0000FF; ">from</span>&nbsp;HTMLParser&nbsp;<span style="color: #0000FF; ">import</span>&nbsp;HTMLParser<br />
<br />
<span style="color: #0000FF; ">class</span>&nbsp;MyParser(HTMLParser):<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;levelField&nbsp;=&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;levelInfo&nbsp;=&nbsp;-1<br />
&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;=&nbsp;-1&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">str&nbsp;=&nbsp;'abandon&nbsp;=&nbsp;&lt;C&gt;&lt;E&gt;abandons|abandoned|abandoning&lt;/E&gt;&lt;F&gt;&lt;H&gt;&lt;M&gt;a&#183;ban&#183;don&nbsp;||&nbsp;ə\'b&#230;ndən&lt;/M&gt;&lt;/H&gt;&lt;I&gt;&lt;N&gt;&lt;U&gt;n.&lt;/U&gt;&nbsp;&nbsp;放纵,&nbsp;放任;&nbsp;狂热&lt;/N&gt;&lt;/I&gt;&lt;I&gt;&lt;N&gt;&lt;U&gt;v.&lt;/U&gt;&nbsp;&nbsp;丢弃;&nbsp;中止,&nbsp;放弃;&nbsp;遗弃,&nbsp;抛弃;&nbsp;使放纵&lt;/N&gt;&lt;/I&gt;&lt;/F&gt;&lt;/C&gt;'</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;handle_starttag(self,&nbsp;tag,&nbsp;attrs):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">c</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;0&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">content</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">e</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;1&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">extend</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">f</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field.append(DictField())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelField&nbsp;+=&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelInfo&nbsp;=&nbsp;-1</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'levelField&nbsp;=',&nbsp;self.levelField</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;2&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">field</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">l</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;3&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">link</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">m</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;4&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">symbol</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">i</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].info.append(DictInfo())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelInfo&nbsp;+=&nbsp;1<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'info&nbsp;==&nbsp;levelField&nbsp;=&nbsp;%s&nbsp;levelInfo&nbsp;=&nbsp;%s'&nbsp;%&nbsp;(self.levelField,&nbsp;self.levelInfo)</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;5&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">info</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">n</span><span style="color: #800000; ">'</span>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;6&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">meaning</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">u</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;7&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">category&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;handle_endtag(self,&nbsp;tag):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;tag&nbsp;==&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">u</span><span style="color: #800000; ">'</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;6&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">meaning&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;handle_data(self,&nbsp;data):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;self.levelField<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;self.flag&nbsp;==&nbsp;1:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.extend.append(data)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;3:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].link&nbsp;=&nbsp;data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;4:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].symbol&nbsp;=&nbsp;data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;6:<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'meaning&nbsp;==&nbsp;index&nbsp;=&nbsp;%d'&nbsp;%&nbsp;index</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].info[index&nbsp;*&nbsp;5&nbsp;+&nbsp;self.levelInfo].meaning&nbsp;=&nbsp;data<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'meaning&nbsp;==&nbsp;levelField=%d&nbsp;levelInfo=%d'&nbsp;%&nbsp;(self.levelField,&nbsp;self.levelInfo)</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'meaning&nbsp;==&nbsp;info:&nbsp;%s'&nbsp;%&nbsp;self.result.field[self.levelField].info[self.levelInfo]</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">elif</span>&nbsp;self.flag&nbsp;==&nbsp;7:<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'category&nbsp;==&nbsp;index&nbsp;=&nbsp;%d'&nbsp;%&nbsp;index&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result.field[self.levelField].info[index&nbsp;*&nbsp;5&nbsp;+&nbsp;self.levelInfo].category&nbsp;=&nbsp;data<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'category&nbsp;==&nbsp;levelField=%d&nbsp;levelInfo=%d'&nbsp;%&nbsp;(self.levelField,&nbsp;self.levelInfo)</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'category&nbsp;==&nbsp;info:&nbsp;%s'&nbsp;%&nbsp;self.result.field[self.levelField].info[self.levelInfo]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;parse(self,&nbsp;html,&nbsp;data):<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelField&nbsp;=&nbsp;-1</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.levelInfo&nbsp;=&nbsp;-1</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.flag&nbsp;=&nbsp;-1&nbsp;&nbsp;</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.result&nbsp;=&nbsp;data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.feed(html)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">class</span>&nbsp;DictInfo:<br />
&nbsp;&nbsp;&nbsp;&nbsp;category&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;meaning&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">[category&nbsp;=&nbsp;%s&nbsp;meaning&nbsp;=&nbsp;%s]</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(self.category,&nbsp;self.meaning)<br />
<br />
<span style="color: #0000FF; ">class</span>&nbsp;DictField:<br />
&nbsp;&nbsp;&nbsp;&nbsp;symbol&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;link&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;=&nbsp;[DictInfo()&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;range(0,25)]<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">[symbol&nbsp;=&nbsp;%s&nbsp;|&nbsp;link&nbsp;=&nbsp;%s&nbsp;info&nbsp;=&nbsp;%s]</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(self.symbol,&nbsp;self.link,&nbsp;string.join(map(str,&nbsp;self.info)))<br />
&nbsp;<br />
<span style="color: #0000FF; ">class</span>&nbsp;DictData:<br />
&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;extend&nbsp;=&nbsp;[]&nbsp;<span style="color: #008000; ">#</span><span style="color: #008000; ">stringlist</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;field&nbsp;=&nbsp;[]&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">def</span>&nbsp;<span style="color: #800080; ">__str__</span>(self):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">word&nbsp;=&nbsp;%s&nbsp;extend&nbsp;=&nbsp;%s&nbsp;field&nbsp;=&nbsp;%s</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(self.word,&nbsp;string.join(map(str,&nbsp;self.extend)),&nbsp;string.join(map(str,&nbsp;self.field)))<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;parseHtml(html,&nbsp;output):<br />
&nbsp;&nbsp;&nbsp;&nbsp;parser&nbsp;=&nbsp;MyParser()<br />
&nbsp;&nbsp;&nbsp;&nbsp;parser.parse(html,&nbsp;output)<br />
&nbsp;&nbsp;&nbsp;&nbsp;parser.close()<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;analyseLine(str,&nbsp;output):<br />
&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;=&nbsp;str.find(<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;=</span><span style="color: #800000; ">'</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;output.word&nbsp;=&nbsp;str[:pos]<br />
&nbsp;&nbsp;&nbsp;&nbsp;html&nbsp;=&nbsp;str[pos&nbsp;+&nbsp;3&nbsp;:]<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'html=',&nbsp;html</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;parseHtml(html,&nbsp;output)<br />
</span></div>
&nbsp; &nbsp; 这个实现了从解开后的ld2记录到内部数据的解析;<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_110311" onclick="this.style.display='none'; Code_Closed_Text_110311.style.display='none'; Code_Open_Image_110311.style.display='inline'; Code_Open_Text_110311.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_110311" style="display: none" onclick="this.style.display='none'; Code_Open_Text_110311.style.display='none'; Code_Closed_Image_110311.style.display='inline'; Code_Closed_Text_110311.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_110311" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">data2xml.py</span><span id="Code_Open_Text_110311" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><br />
<span style="color: #0000FF; ">import</span>&nbsp;string<br />
<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&lt;X&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;D&gt;dictid&lt;/D&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;E&gt;E1&lt;/E&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;E&gt;E2&lt;/E&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;S&gt;Symbol&lt;/S&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;L&gt;Link&lt;/L&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;C&gt;category&lt;/C&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;M&gt;Meaning&lt;/M&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;C&gt;category&lt;/C&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;M&gt;Meaning&lt;/M&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;S&gt;Symbol&lt;/S&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;L&gt;Link&lt;/L&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;C&gt;category&lt;/C&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;M&gt;Meaning&lt;/M&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/I&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/F&gt;</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&lt;/X&gt;</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">def</span>&nbsp;addtag(list,&nbsp;stag,&nbsp;etag):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(list)&nbsp;&gt;&nbsp;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;data&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;list:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;stag&nbsp;+&nbsp;string.strip(data,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;etag<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span><br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addExtend(extend):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;addtag(extend,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;e&gt;</span><span style="color: #800000; ">'</span>,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/e&gt;</span><span style="color: #800000; ">'</span>)<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addInfo(info,&nbsp;index):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(info)&nbsp;&gt;&nbsp;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;i&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;info[index&nbsp;*&nbsp;5:(index&nbsp;+&nbsp;1)&nbsp;*&nbsp;5]:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i.category&nbsp;==&nbsp;<span style="color: #800000; ">''</span>&nbsp;<span style="color: #0000FF; ">and</span>&nbsp;i.meaning&nbsp;==&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">break</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;i&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i.category&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;c&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;&nbsp;string.strip(i.category,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/c&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;i.meaning&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;m&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;&nbsp;string.strip(i.meaning,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/m&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/i&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span><br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addSubField(f,&nbsp;index):<br />
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;f.symbol&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;s&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;string.strip(f.symbol,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/s&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;f.link&nbsp;!=&nbsp;<span style="color: #800000; ">''</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;l&gt;</span><span style="color: #800000; ">'</span>&nbsp;+&nbsp;&nbsp;string.strip(f.link,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&nbsp;</span><span style="color: #800000; ">'</span>)&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">/l&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;addInfo(f.info,&nbsp;index)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret&nbsp;<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;addField(field):<br />
&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;=&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;len(field)&nbsp;&gt;&nbsp;0:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;f&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;f&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;field:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;addSubField(f,&nbsp;index)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;+=&nbsp;1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;+=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;/f&gt;</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #800000; ">''</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;data2xml(data):<br />
&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;x&gt;</span><span style="color: #800000; ">'</span>&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">&lt;d&gt;1&lt;/d&gt;</span><span style="color: #800000; ">'</span>&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;addExtend(data.extend)&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;addField(data.field)&nbsp;\<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">&lt;/x&gt;</span><span style="color: #800000; ">"</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;ret<br />
<br />
</span></div>
&nbsp; &nbsp; 这个实现了从内部数据到指定xml字串的处理;(蛋疼啊,ld2本来的数据也是xml格式的...但为了展现我'高超'的python功底,自己又定义了一次格式...)<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_110528" onclick="this.style.display='none'; Code_Closed_Text_110528.style.display='none'; Code_Open_Image_110528.style.display='inline'; Code_Open_Text_110528.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_110528" style="display: none" onclick="this.style.display='none'; Code_Open_Text_110528.style.display='none'; Code_Closed_Image_110528.style.display='inline'; Code_Closed_Text_110528.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_110528" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">dbaccess.py</span><span id="Code_Open_Text_110528" style="display: none"><br />
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">#</span><span style="color: #008000; ">!/usr/bin/python</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;coding:utf-8</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #0000FF; ">import</span>&nbsp;sqlite3&nbsp;as&nbsp;sqlite<br />
<span style="color: #0000FF; ">import</span>&nbsp;re<br />
<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;table_create(conn):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;sql&nbsp;=&nbsp;[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">CREATE&nbsp;TABLE&nbsp;IF&nbsp;NOT&nbsp;EXISTS&nbsp;Word&nbsp;(wordid&nbsp;INTEGER&nbsp;PRIMARY&nbsp;KEY,&nbsp;word&nbsp;TEXT,&nbsp;flag&nbsp;INTEGER)</span><span style="color: #800000; ">'</span>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">CREATE&nbsp;TABLE&nbsp;IF&nbsp;NOT&nbsp;EXISTS&nbsp;Src&nbsp;(srcid&nbsp;INTEGER&nbsp;PRIMARY&nbsp;KEY,&nbsp;wordid&nbsp;INTEGER,&nbsp;fmt&nbsp;INTEGER,&nbsp;orig&nbsp;INTEGER,&nbsp;content&nbsp;TEXT)</span><span style="color: #800000; ">'</span>,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">CREATE&nbsp;TABLE&nbsp;IF&nbsp;NOT&nbsp;EXISTS&nbsp;Dict&nbsp;(dictid&nbsp;INTEGER&nbsp;PRIMARY&nbsp;KEY,&nbsp;title&nbsp;TEXT)</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;s&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;sql:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(s)<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;add_dict(conn,&nbsp;title):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Dict&nbsp;(title)&nbsp;VALUES&nbsp;(\</span><span style="color: #800000; ">'</span>%s\<span style="color: #800000; ">'</span><span style="color: #800000; ">)</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;title)<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.commit()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;add_record(conn,&nbsp;word,&nbsp;record):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;sql.encode('string_scape')</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Word&nbsp;(word,&nbsp;flag)&nbsp;VALUES&nbsp;("%s",1)</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(word))<span style="color: #008000; ">#</span><span style="color: #008000; ">'INSERT&nbsp;INTO&nbsp;Word&nbsp;(word,&nbsp;flag)&nbsp;VALUES&nbsp;(\'%s\',1)'&nbsp;%&nbsp;(word))</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;record&nbsp;=&nbsp;record.replace(<span style="color: #800000; ">'</span><span style="color: #800000; ">\"</span><span style="color: #800000; ">'</span>,&nbsp;<span style="color: #800000; ">''</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Src&nbsp;(wordid,&nbsp;fmt,&nbsp;orig,&nbsp;content)&nbsp;VALUES&nbsp;(%d,&nbsp;3,&nbsp;1,&nbsp;"%s")</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(cursor.lastrowid,&nbsp;record))<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;conn.commit()</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;db_create(dbfile):<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;sqlite.connect(dbfile)<br />
<br />
<span style="color: #0000FF; ">def</span>&nbsp;db_close(conn):<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.close()<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
<span style="color: #0000FF; ">def</span>&nbsp;db_test(conn):<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor&nbsp;=&nbsp;conn.cursor()<br />
&nbsp;&nbsp;&nbsp;&nbsp;record&nbsp;=&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">"1234"</span><span style="color: #800000; ">'</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;record.replace(<span style="color: #800000; ">'</span><span style="color: #800000; ">\"</span><span style="color: #800000; ">'</span>,&nbsp;<span style="color: #800000; ">''</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;cursor.execute(<span style="color: #800000; ">'</span><span style="color: #800000; ">INSERT&nbsp;INTO&nbsp;Word&nbsp;(word,&nbsp;flag)&nbsp;VALUES&nbsp;("%s",&nbsp;1)</span><span style="color: #800000; ">'</span>&nbsp;%&nbsp;(record))<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn.commit()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">######################################3</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">conn&nbsp;=&nbsp;db_create('../data/lac.db')</span><span style="color: #008000; "><br />
</span><br />
<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">add_dict(conn,&nbsp;'test')</span><span style="color: #008000; "><br />
</span><br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">db_close(conn)</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span></div>
&nbsp; &nbsp; 这个实现了相关的数据库功能,包括主要的创建,写入等;<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;!/usr/bin/python</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;coding:utf-8</span><span style="color: #008000; "><br /></span><br />
<span style="color: #0000FF; ">import</span>&nbsp;string<br /><span style="color: #0000FF; "><br />import</span>&nbsp;htmlparser<br />
<span style="color: #0000FF; ">import</span>&nbsp;data2xml<br />
<span style="color: #0000FF; ">import</span>&nbsp;dbaccess<br />
<br /><span style="color: #0000ff; ">def</span>&nbsp;main():<br /><span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;'test&nbsp;=&nbsp;&lt;c&gt;&lt;E&gt;1&lt;/E&gt;&lt;E&gt;2&lt;/E&gt;'</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;=&nbsp;open(<span style="color: #800000; ">"</span><span style="color: #800000; ">../data/output.txt</span><span style="color: #800000; ">"</span>,&nbsp;<span style="color: #800000; ">"</span><span style="color: #800000; ">r</span><span style="color: #800000; ">"</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;conn&nbsp;=&nbsp;dbaccess.db_create(<span style="color: #800000; ">"</span><span style="color: #800000; ">../data/lac.db3</span><span style="color: #800000; ">"</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.table_create(conn)<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.db_test(conn)</span><span style="color: #008000; "><br />
#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;return</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.add_dict(conn,&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">Vicon&nbsp;English-Chinese(S)&nbsp;Dictionary</span><span style="color: #800000; ">'</span>)<br />
&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;0<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;line&nbsp;<span style="color: #0000FF; ">in</span>&nbsp;file:<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;line</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;htmlparser.DictData()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;htmlparser.analyseLine(string.rstrip(line,&nbsp;&nbsp;<span style="color: #800000; ">'</span><span style="color: #800000; ">\n</span><span style="color: #800000; ">'</span>),&nbsp;data)<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'data&nbsp;=====&nbsp;',&nbsp;data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp; &nbsp;<br />
<span style="color: #008000; ">#</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;data2xml.data2xml(data)</span><span style="color: #008000; "><br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.add_record(conn,&nbsp;data.word,&nbsp;data2xml.data2xml(data))<br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;dbaccess.db_close(conn)<br />
&nbsp;&nbsp;&nbsp;&nbsp;file.close()<br />
<br />
main()</div>
<br />&nbsp; &nbsp; 这个就是main入口了...<br /><br />&nbsp; &nbsp; 如何?俺写的Python脚本如何?要是俺跟你说,一个月前,我连Python都会拼错,现在却可以写出如此'长'的Python脚本来了...你是觉得我很猛,还是觉得Python佷简单呢...<br />
&nbsp; &nbsp; 虽然在编写Python脚本的时候,碰到了各种郁闷错误,各种坑爹的用法,但我还是满喜欢Python的,<a href="http://www.cppblog.com/codejie/archive/2012/02/29/166755.html">总比使用由那位获得两届IOCCC大奖的家伙创建的Perl的感觉</a>爽了很多很多啊....<br />
<br />
<br />&lt;---- 松口气的分割线 ----&gt;<br /><br />
&nbsp; &nbsp; 昨晚终于搞定了这最终的Python脚本,但测试的结果不是佷满意. 生成LAC的sqlite数据需要将近3个小时不说,这超过80MB的数据文件更加让人崩溃...不过总的来说,终于可以先暂时放下这个数据导入的问题,继续编写LAC了...<br /><br />&nbsp; &nbsp;这个月工作上有些变故,也一直难以静心敲字,到上周也算到过阶段了...终于可以放松下了...<br />
<br />
<br />
<br /><img src ="http://www.cppblog.com/codejie/aggbug/194150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-11-01 11:28 <a href="http://www.cppblog.com/codejie/archive/2012/11/01/194150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : WordExport Update</title><link>http://www.cppblog.com/codejie/archive/2012/10/23/193750.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 23 Oct 2012 14:32:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/10/23/193750.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/193750.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/10/23/193750.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/193750.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/193750.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 上周收到封mail,问为何WordExport插件导出的单词都是按照字母排好序的...<br />&nbsp; &nbsp; 这个问题让我开始很奇怪? 排好序不好吗? 理由很多,例如,便于查找什么的;词典不就如此吗?<br />&nbsp; &nbsp; 实际人家的想法也很简单 -- 如果单词是从一篇文章中提取的,那么按照添加的顺序导出,不是更加便于记忆吗?<br /><br />&nbsp; &nbsp; 是啊,这理由太充分了...于是,于是就有了这次的更新(1.0.1):<br /><br />&nbsp; &nbsp; 1. 支持按照单词字母顺序和添加顺序导出;<br /><br />&nbsp; &nbsp; 如下图所示:<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh-export2.png" border="0" alt="" width="510" height="213" /><br /><br />&nbsp; &nbsp; 希望这次修改可以满足需求,如有需要,请<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">这里下载</a>.<br />&nbsp; &nbsp; 安装的方法很简单,下载<a href="http://code.google.com/p/lingoshook/downloads/detail?name=P_WordExport.zip&amp;can=2&amp;q=">P_WordExport.zip</a>,解压到LingosHook的插件目录下(默认为:'C:\Program Files (x86)\Jie\LingosHook\plugins'),覆盖原来的P_WordExport.dll即可.记得要先退出LingosHook哦~<br /><br />&nbsp; &nbsp; 这个修改不复杂,但要修改界面还是满烦的,所以,直接在右上角加了个checkbox提供选择,希望各位能看懂...实际应该再添加一个分段,叫做"Export Order'什么的,太麻烦了...好吧,我真的很懒的...<br /><br />&nbsp; &nbsp; 这几天在搞一个想来蛋疼,但绝对好玩的尝试,再过几天show给大家看啊,看我有多蛋疼..哇哈哈...<img src ="http://www.cppblog.com/codejie/aggbug/193750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-10-23 22:32 <a href="http://www.cppblog.com/codejie/archive/2012/10/23/193750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : Lingoes-Extractor is powerful</title><link>http://www.cppblog.com/codejie/archive/2012/10/16/193392.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 16 Oct 2012 15:59:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/10/16/193392.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/193392.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/10/16/193392.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/193392.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/193392.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 又仔细分解了下<a href="http://Lingoes-Extrator.googlecode.com">Lingoes-Extractor</a>的代码,发现<a href="http://www.cppblog.com/codejie/archive/2012/10/16/193343.html">昨晚</a>弄错了...人家不是没有做到'细致'破解,人家只是'好心'将所有tag都strip掉了...下次是破解出的原始数据:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->abut&nbsp;=&nbsp;&lt;C&gt;&lt;E&gt;abuts|abutted|abutting&lt;/E&gt;&lt;F&gt;&lt;H&gt;&lt;M&gt;a&#183;but&nbsp;||&nbsp;ə'bʌt&lt;/M&gt;&lt;/H&gt;&lt;I&gt;&lt;N&gt;&lt;U&gt;v.&lt;/U&gt;&nbsp;&nbsp;邻接;&nbsp;紧靠;&nbsp;毗连&lt;/N&gt;&lt;/I&gt;&lt;/F&gt;&lt;/C&gt;</div><br />&nbsp; &nbsp; LD2文件中是通过自定义Tag来标示的,类似HTML格式,哇哈哈...这个,这个是咱的强项,咱有<a href="http://code.google.com/p/lingoshook/source/browse/branches/1.5.000/LingosHookApp/TinyHtmlParser.h">TinyHtmlParser</a>在手,就分解/隔离什么的,不麻烦人家了...<br /><br />&nbsp; &nbsp; LAC的Native Dictionary的有希望了...为减少开发时间(WOW中我才87级啊...)计划就用Lingoes默认的Vicon词典作为LAC词典的数据源了.<br /><br /><img src ="http://www.cppblog.com/codejie/aggbug/193392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-10-16 23:59 <a href="http://www.cppblog.com/codejie/archive/2012/10/16/193392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Is that what you want?</title><link>http://www.cppblog.com/codejie/archive/2012/09/28/192328.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 28 Sep 2012 15:43:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/09/28/192328.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/192328.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/09/28/192328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/192328.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/192328.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 啥也不说,先看张图来..<br />
<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-dict.png" border="0" alt="" /><br /><br />&nbsp; &nbsp; 如何?看出什么'可疑'的'字符串'了吗?嘿嘿...这个是不是你想要的?&nbsp;今天剧透下,这个功能将是LAC的一个主要功能了! 这个就是<a href="http://www.cppblog.com/codejie/archive/2012/08/18/187603.html">前面提到的</a> -- Native Dictionary!!<br />&nbsp; &nbsp; 为什么现在才提起这个?因为今晚才搞定SlidingDrawer啊...早想好了,怕做不出来,没敢讲啊...咋样?有啥想法,赶紧说啊...<br /><br />&nbsp; &nbsp; LAC的下载量现在已经到200了,这速度比当年LingosHook刚发布时那是快了100倍啊,100倍...哇哈哈...(唉,AD什么的,都是浮云,咱今天就不说这个了...)<br /><br /><br />&lt;---- 吐槽的分隔线 ----&gt;<br /><br />&nbsp; &nbsp; 十一到了,要休息几天了...当然不是去打WOW了,是去LP家而已...所以要好几天不处理邮件,抱歉哦...<br /><br />&nbsp; &nbsp; (这才是吐槽)<br />&nbsp; &nbsp; 昨天一下午,直接把近两个月的'话务量'都用完了...晚上头昏脑胀,无心敲字...所以啊,请让LAC跟LingosHook一样,容我慢慢敲啊...半夜一个人google来goole去,真的慢的...<br /><img src ="http://www.cppblog.com/codejie/aggbug/192328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-09-28 23:43 <a href="http://www.cppblog.com/codejie/archive/2012/09/28/192328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : English Version to import data</title><link>http://www.cppblog.com/codejie/archive/2012/08/30/188836.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 30 Aug 2012 14:41:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/08/30/188836.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/188836.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/08/30/188836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/188836.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/188836.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 由于LAC一直同时支持中文和英文的,这个跟LingosHook一样(要吐槽E文版翻译,随便...反正俺自己不用E文的...),所以在LAC实现远程导入时,也是有相应的英文页面的,如下图所示;<br />
<br />
<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im17.png" border="0" alt="" width="522" height="371" /><br />
<br />
&nbsp; &nbsp; <a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a> Release 1.1.x却忘记支持这些E文网页了...所以今天乘着在家看宝宝,搞定了这个...以为要再写一套跟支持中文一样的函数来,结果发现一个好方法,简单了许多,简单到一个函数也没有添加...<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->&nbsp; &nbsp; @Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;Response&nbsp;serve(String&nbsp;uri,&nbsp;String&nbsp;method,&nbsp;Properties&nbsp;header,&nbsp;&nbsp;&nbsp;&nbsp;Properties&nbsp;parms,&nbsp;Properties&nbsp;files)&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;displayDebugInfo(uri,&nbsp;method,&nbsp;header,&nbsp;parms,&nbsp;files);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(uri.length()&nbsp;&gt;&nbsp;0&nbsp;&amp;&amp;&nbsp;uri.startsWith("/"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uri&nbsp;=&nbsp;uri.substring(1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(method.equals("GET"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(uri.equals(""))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uri&nbsp;=&nbsp;"index.html";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(uri.equals("index.html")&nbsp;||&nbsp;uri.equals("index_eng.html"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;requestRoot(uri,&nbsp;method,&nbsp;header,&nbsp;parms,&nbsp;files);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(method.equals("POST"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(uri.equals("import_file.html")&nbsp;||&nbsp;uri.equals("import_file_eng.html"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;requestImportFile(uri,&nbsp;method,&nbsp;header,&nbsp;parms,&nbsp;files);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(uri.equals("import_file_done.html")&nbsp;||&nbsp;uri.equals("import_file_done_eng.html"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;requestImportFileDone(uri,&nbsp;method,&nbsp;header,&nbsp;parms,&nbsp;files);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(uri.equals("input_data.html")&nbsp;||&nbsp;uri.equals("input_data_eng.html"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;requestInputData(uri,&nbsp;method,&nbsp;header,&nbsp;parms,&nbsp;files);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(uri.equals("input_data_done.html")&nbsp;||&nbsp;uri.equals("input_data_done_eng.html"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;requestInputDataDone(uri,&nbsp;method,&nbsp;header,&nbsp;parms,&nbsp;files);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;ex)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;badRequest();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;unsupportedRequest(uri,&nbsp;method,&nbsp;header,&nbsp;parms,&nbsp;files);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<br />&nbsp; &nbsp; 想来真的要用E文的应该不多(我还是怕这些E文页面大家也看不明白...),所以就不更新了,留到下个版本一起release吧...<img src ="http://www.cppblog.com/codejie/aggbug/188836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-08-30 22:41 <a href="http://www.cppblog.com/codejie/archive/2012/08/30/188836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Release 1.1.1</title><link>http://www.cppblog.com/codejie/archive/2012/08/30/188681.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 29 Aug 2012 16:57:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/08/30/188681.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/188681.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/08/30/188681.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/188681.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/188681.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 晚上写LAC<a href="http://www.cppblog.com/codejie/archive/2012/08/30/164888.html">在线文档</a>的时候,发现两个低级的Bugs,赶紧修改了..<br /><br />&nbsp; &nbsp; 从<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">下载</a>量上看,几乎没有影响,还好...<br /><br />&nbsp; &nbsp; 所以说,用的人少,也是有好处的,至少被骂的少,哇哈哈...<br />&nbsp; &nbsp; 但,用的人少,AD也就少,银子哪里来啊...5555...为了俺的银子,请各位多多点击AD啊...不点击的话,你打开LAC,然后就放哪里也好啊...(无耻了..)<img src ="http://www.cppblog.com/codejie/aggbug/188681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-08-30 00:57 <a href="http://www.cppblog.com/codejie/archive/2012/08/30/188681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC:LingosHook Android Client Online Help</title><link>http://www.cppblog.com/codejie/archive/2012/08/30/164888.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 29 Aug 2012 16:21:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/08/30/164888.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/164888.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/08/30/164888.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/164888.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/164888.html</trackback:ping><description><![CDATA[<br /><div>
<div><strong>1. 应用说明</strong></div>
<div><span style="white-space:pre">	</span><a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a> (LingosHook Android Client)是LingosHook在Android系统下的Client应用，其主要用于方便大家随时&#8216;记忆&#8217;LingosHook中的单词的需求。（当然目前LAC只能限于Andorid系统了，IOS嘛，可能未来要用LIS吧。。。）</div>
<div><span style="white-space:pre">	</span>LAC使用<a href="http://www.cppblog.com/codejie/archive/2012/07/26/185254.html">内部一套公式来强化</a>&#8217;单词&#8216;的记忆。其公式的主要参数是对单词的&#8217;熟悉度&#8216;；简单地解释就是：越熟悉的单词，需要记忆的次数越少，反之陌生的单词，应用将频繁显示。</div>
<div><span style="white-space:pre">	</span>这里建议每日使用LAC应用一次(就像WOW里面做个日常,是吧...).</div>
<div><strong>2. 下载安装</strong></div>
<div><span style="white-space:pre">	</span>LAC请点击如下链接下载；安装请参考Android下应用安装方法。</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">LingosHook相关应用统一下载列表</a><br />
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div>
<div><strong>3. 数据准备</strong></div>
<div><span style="white-space:pre">	</span>LAC的数据可以通过下面多种方法建立和获得：</div>
<div><span style="white-space:pre">	</span>a. LAC作为LingosHook的Client应用，其数据可以通过LingosHook提供的Data Export插件导出所需数据，具体请参见：<a href="http://www.cppblog.com/codejie/archive/2012/05/30/176762.html">http://www.cppblog.com/codejie/archive/2012/05/30/176762.html</a>.此方法应为LAC主要的数据来源方式；</div>
<div><span style="white-space:pre">	</span>b. 直接下载提供的实例数据文件，链接如下:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i. <a href="http://code.google.com/p/lingoshook/downloads/detail?name=c4.db3&amp;can=2&amp;q=">CET-4</a><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ii. <a href="http://code.google.com/p/lingoshook/downloads/detail?name=c6.db3&amp;can=2&amp;q=">CET-6</a><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iii. <a href="http://code.google.com/p/lingoshook/downloads/detail?name=c46.db3&amp;can=2&amp;q=">CET-4 &amp; CET-6</a><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; iv. <a href="http://code.google.com/p/lingoshook/downloads/detail?name=LH_Export.db3&amp;can=2&amp;q=">Example Database</a><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Note: CET原始数据来自网上,haolly提供的建议,唯一能确认作者的是最后的签名--"洪楼情缘",希望我没有'侵权'什么的...<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;我并没有验证数据的正确性,只是发现CET-4原始数据中没有'D'开头的单词,奇怪噢..<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; c.编写数据集文件<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 参考下面XML格式说明,编写自定义数据集;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version='1.0'&nbsp;encoding='UTF-8'&nbsp;standalone='yes'&nbsp;</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; "><a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a></span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Version</span><span style="color: #0000FF; ">&gt;</span>1.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Version</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">DefaultDict</span><span style="color: #0000FF; ">&gt;</span>{确实词典标题}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">DefaultDict</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">WordList</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;一个或多个,&nbsp;每个单词数据须放置在一个Item段中&nbsp;</span><span style="color: #008000; ">--&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Dict</span><span style="color: #0000FF; ">&gt;</span>{词典标题,可选项}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Dict</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Word</span><span style="color: #0000FF; ">&gt;</span>{单词}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Word</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Symbol</span><span style="color: #0000FF; ">&gt;</span>{音标,可选项}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Symbol</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">DataList</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span>&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;单词解释数据,一个或多个&nbsp;</span><span style="color: #008000; ">--&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span>{词类,可选项}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span>{单词解释}<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">DataList</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">WordList</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; "><a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a></span><span style="color: #0000FF; ">&gt;</span>&nbsp; &nbsp;&nbsp;</div><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 这里有段例子<a href="http://www.cppblog.com/codejie/archive/2012/08/28/188560.html">,请参看</a>;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; d.输入单一数据<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 可以通过LAC提供的本地和远程两种方式,直接输入数据;具体请看'数据导入'部分说明.<br /><br /><strong>4. 数据导入</strong></div>
<div><span style="white-space:pre">	</span>数据导入操作如下：</div>
<div><span style="white-space:pre">	</span>在LAC主界面中，点击&#8216;菜单&#8217;按钮，弹出如下菜单项：</div>
<div><span style="white-space: pre; ">	<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-main21.png" border="0" alt="" width="183" height="297" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-main11.png" border="0" alt="" width="182" height="298" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-main31.png" border="0" alt="" width="180" height="299" /></span></div>
<div><span style="white-space:pre">	</span>选择点击&#8216;导入&#8217;项，显示如下菜单选项：<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im4.png" border="0" alt="" width="181" height="296" /><br /><br />&nbsp; &nbsp; &nbsp; &nbsp; a. 输入单一数据方式<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 点击'输入单一数据'菜单,显示如下界面;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im5.png" border="0" alt="" width="182" height="301" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im6.png" border="0" alt="" width="179" height="287" /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 如图所示,输入数据的相关字段,(Optional表示此字段为可选项,可以不输入),点击添加,即可将单条数据加入到LAC中;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; b. 本地文件批量导入方式<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 点击'导入本地文件'菜单,显示如下菜单;LAC支持.db3和.xml格式的数据文件,直接填写文件路径和名称即可,应用会自动识别的.</div>
<div><span style="white-space: pre; ">            <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im1.png" border="0" alt="" width="183" height="297" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im2.png" border="0" alt="" width="182" height="297" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im3.png" border="0" alt="" width="181" height="295" /></span></div>
<div><span style="white-space:pre">	</span>输入数据文件所在的目录和文件名称，点击&#8216;导入&#8217;按钮即可。如下是导入过程界面显示。导入过程结束时，&#8216;导入&#8217;按钮将变成&#8216;完成&#8217;，点击返回主界面。</div>
<div><span style="white-space:pre">	</span>界面中的&#8216;覆盖&#8216;选项用于决定当前要导入的数据是否替换原有数据，如果选择&#8217;覆盖&#8216;，则是将应用原有数据删除，重新导入数据，并重置数据的应用数据（。。。）；反之，只是将导入数据追加到应用中，并不影响原有数据的应用数据。</div>
<div><span style="white-space: pre; "><br />        c. 远程文件/数据导入方式<br />            点击'导入远程文件'菜单项,界面显示如下:<br />            <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im7.png" border="0" alt="" width="298" height="182" /><br />            此时,<strong>不要关闭当前界面</strong>,在同网段的电脑上,打开浏览器,并输入界面中显示的URL,比如,'http://192.168.1.100:8102';浏览器中将显示如下页面:<br />            <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im8.png" border="0" alt="" width="512" height="402" /><br />            点击'ImportFile'按钮,并按照说明选择当前电脑上要导入的数据文件,应用同时支持.db3和.xml格式的数据;<br />            <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im9.png" border="0" alt="" width="462" height="388" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im10.png" border="0" alt="" width="462" height="386" /><br />            点击'上传并导入'按钮,浏览器页面转换如下:<br />            <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im11.png" border="0" alt="" width="463" height="385" /><br />            此时,可以在手机上查看具体的导入结果,如下图所示:<br />            <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im12.png" border="0" alt="" width="298" height="180" /><br /><br />            如果在首页面中点击'InputData'按钮,可以通过浏览器直接输入数据,如下图所示:<br />             <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im13.png" border="0" alt="" width="522" height="649" /><br /><br />             然后,可在手机上的LAC中查看结果:<br />             <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im14.png" border="0" alt="" width="299" height="182" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im15.png" border="0" alt="" width="294" height="178" />(发现两个bugs...)<br /><br /></span></div>
<div><strong>4. 使用说明</strong></div>
<div><span style="white-space:pre">	</span>a. 记忆功能部分</div>
<div><span style="white-space:pre">	</span>LAC安装并导入数据后，点击主界面，将出现如下界面：<br />
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-main11.png" border="0" alt="" width="182" height="298" /></div>
<div><span style="white-space:pre">	</span>其提示显示的是今日（本次）需要记忆的单词数量，包括需要重复记忆的单词和新的单词，这两个数字随着每天的记忆情况而变化，但其最大值是可以配置，请参考后面&#8216;参数配置&#8217;部分。</div>
<div><span style="white-space:pre">	</span>点击当前界面，进入&#8216;记忆&#8217;部分，如下所示：<br />
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-wd1.png" border="0" alt="" width="184" height="298" /></div>
<div><span style="white-space:pre">	</span>界面显示单词的同时，也将自动朗读此单词（此项可以配置）。单词下面有四个&#8216;熟悉度&#8217;选项，请根据自己对单词的印象，相应选择单词 下面四个&#8216;熟悉度&#8217;选项。此时若点击单词，可再次朗读单词。</div>
<div><span style="white-space:pre">	</span>单词右侧上方显示了当前还剩下多少单词需要记忆，不同前缀代表不同类别，N是新单词，O是就单词，M是&#8216;再记&#8217;单词。</div>
<div><span style="white-space:pre">	</span>单词下面（或右侧，这个根据要看界面方向有所不同）是输入板，用于喜欢边背边写同学涂鸦用的。</div>
<div><span style="white-space:pre">	</span></div>
<div><span style="white-space:pre">	</span>当点击任一&#8217;熟悉度&#8216;选项后，应用将显示当前单词的解释（此项可以配置），如下图：</div>
<div><span style="white-space:pre">        <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-wd2.png" border="0" alt="" width="181" height="297" /><br />
</span></div>
<div><span style="white-space:pre">	</span>界面下面有个&#8216;再记一次&#8217;的按钮，用于标识当前单词在最后还需要再记一次，此选择会影响单词熟悉度判定。点击按钮其它地方将当返回前一个页面，并显示下一个单词。</div>
<div><span style="white-space:pre">	</span>b. 查看功能部分</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; 在LAC主界面中点击菜单按钮，并选择&#8216;数据列表&#8217;项，将显示类似如下界面：</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-lt1.png" border="0" alt="" width="182" height="300" /></div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; 界面中列出了说有的单词信息，上面三列为总量，下面则为按照&#8216;时间&#8217;进行分类；分类中，上面的稍大数字代表单词下次显示的间隔天数，下面数字标识当前时间下的单词数量。<br />
<div>&nbsp; &nbsp; &nbsp; &nbsp; 从界面中可以看出每日将要显示的单词数量；当间隔天数为负值时，表示单词应该在现在时间之前记忆。LAC对于时间间隔小于当天（即值为0）的单词都将在当天显示，当然显示数量受配置控制。如果想一天完成所有&#8216;旧&#8217;单词，只需多次打开LAC即可。</div>
</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; 此时点击任意标签，包括上面的&#8216;全部单词&#8217;、&#8216;新单词&#8217;和&#8216;旧单词&#8217;，以及下面的分类标签，都将显示相对应的单词列表，如下图所示。<br />
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-lt2.png" border="0" alt="" width="182" height="298" /><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;此时,点击任意单词,将显示单词解释,如下图所示:<br />
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-lt3.png" border="0" alt="" width="181" height="301" /></div>
<div><br />&nbsp; &nbsp; &nbsp; &nbsp; 如果'长时间'点击单词,可以删除当前单词;<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-im16.png" border="0" alt="" width="180" height="296" /><br /><br /><strong>
5. 参数配置</strong></div>
<div><span style="white-space:pre">	</span>在LAC主界面中点击菜单按钮，选择&#8217;设置&#8216;项，界面切换至如下配置界面：</div>
<div><span style="white-space:pre">        <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-set1.png" border="0" alt="" width="181" height="299" />	</span></div>
<div><span style="white-space:pre">	</span>在配置界面中，可以对如下项目进行定制：</div>
<div><span style="white-space:pre">	</span>a. 新单词数量：配置每次新单词最多显示个数；</div>
<div><span style="white-space:pre">	</span>b. 旧单词数量：配置每次旧单词最多显示个数；</div>
<div><span style="white-space:pre">	</span>c. 自动加载标记为&#8217;再记&#8216;的单词：如果开启此项，则当每次记忆单词结束时，应用自己加载在过程中被标记为&#8217;再记&#8216;的单词；反之，应用会在结束时将提示是否再次加载；</div>
<div><span style="white-space:pre">	</span>d. 自动加载语音： 开启此项，应用会在单词显示时，自动发音；</div>
<div><span style="white-space:pre">	</span>e. 自动刷新输入板：开启此项，应用将自动在指定间隔内刷新输入板，反之只有在单词切换时才刷新；</div>
<div><span style="white-space:pre">	</span>f. 输入板刷新间隔：单位秒；</div>
<div><span style="white-space:pre">	</span>g. 输入板笔色：设置输入板输入颜色；</div>
<div><span style="white-space:pre">	</span>h. 输入板笔宽：设置输入板输入宽度；</div>
<div><span style="white-space:pre">	i. 开启Web页面点击响应: 开启此项,在单词解释界面中,点击界面任何地方将自动切换到下一单词;反之,界面中将显示'下一个'按钮,只有点击此按钮时,才会切换;<br /><br /></span></div>
<div><strong>6. Q &amp; A</strong></div>
<div><span style="white-space:pre">	</span></div>
<div><span style="white-space:pre">	</span>Q: 输入板输入无效？</div>
<div><span style="white-space:pre">	</span>A: 重新在设置菜单中配置下各参数；</div>
<div><span style="white-space:pre">	</span></div>
<div><span style="white-space:pre">	</span>Q: 两个下载包有何不同？</div>
<div><span style="white-space:pre">	</span>A: 两个下载包只是内部使用的广告商家不同，功能完成相同；（另：辛苦有空没空就点下广告，感谢支持。。。。）</div>
<div><span style="white-space:pre"> </span></div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; Q: 没有语音?<br />
<div><span style="white-space:pre">	</span>A: Android系统中的语音系统使用的也叫TTS，跟windows上类似，原生的应该使用的是picoTTS。</div>
<div><span style="white-space:pre">	</span>&nbsp; &nbsp; 如果LAC初始TTS失败，会显示一条提示信息，如下所示：</div>
<div><span style="white-space:pre">        <img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-tts1.png" border="0" alt="" width="179" height="298" />	</span> &nbsp;&nbsp;</div>
<div><span style="white-space:pre">	</span>&nbsp; &nbsp; 希望你看不到这个提示信息.我的G7被刷后就没法启动TTS了，一直也没搞定，所以如果有问题，只能辛苦大家自己google下吧。</div>
<span style="white-space:pre">	</span> &nbsp;&nbsp;</div>
<div></div>
</div><img src ="http://www.cppblog.com/codejie/aggbug/164888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-08-30 00:21 <a href="http://www.cppblog.com/codejie/archive/2012/08/30/164888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: Release 1.1.0</title><link>http://www.cppblog.com/codejie/archive/2012/08/28/188560.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Tue, 28 Aug 2012 15:17:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/08/28/188560.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/188560.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/08/28/188560.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/188560.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/188560.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; <a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a> 1.1.0终于写好了!主要更新如下:<strike>,本来打算今晚写好在线文档的,但..怕是完成不了了...所以决定还是先Release,文档明天再说!<br />
<br />
</strike>&nbsp; &nbsp; 1. 支持XML格式导入;
&nbsp; <br />
&nbsp; &nbsp; 2. 支持单个数据导入;<br />
&nbsp; &nbsp; 3. 支持远程(HTTP)方式导入;<br />
&nbsp; &nbsp; 4. 增加'Html界面点击'配置.<br />
<br />
&nbsp; &nbsp; <a href="http://www.cppblog.com/codejie/archive/2012/08/02/164888.html">在线文档也更新了,这里查看;</a>&nbsp;有没有感觉新的导入和输入方式很强大啊..支持HTTP哦!!!&nbsp;哇哈哈...&nbsp;<br />
&nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp; 最后,<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">还是到这里下载</a>!<br />
<br />
<br />
<strike>&nbsp; &nbsp; 简短说下更新:点击"导入"菜单,然后自己去试试先吧...<br />
&nbsp; &nbsp;&nbsp;<a href="http://www.cppblog.com/codejie/archive/2012/08/02/164888.html">原来的在线文档在这里</a>,新支持的XML文件格式请先参考如下例子吧...抱歉啊..今天有点累,真的连续写了好多天了...<br />
<br />
</strike>&nbsp; &nbsp; 新支持的XML文件格式的例子如下,请参考.&nbsp;<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version='1.0'&nbsp;encoding='UTF-8'&nbsp;standalone='yes'&nbsp;</span><span style="color: #0000FF; ">?&gt;</span><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; "><a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a></span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Version</span><span style="color: #0000FF; ">&gt;</span>1.0<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Version</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">DefaultDict</span><span style="color: #0000FF; ">&gt;</span>test<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">DefaultDict</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">WordList</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Dict</span><span style="color: #0000FF; ">&gt;</span>dict<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Word</span><span style="color: #0000FF; ">&gt;</span>word<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Word</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Symbol</span><span style="color: #0000FF; ">&gt;</span>wc'd<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Symbol</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">DataList</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span>n.<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span>meaning<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span>v.<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span>meaning2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">DataList</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Dict</span><span style="color: #0000FF; ">&gt;</span>dict2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Dict</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Word</span><span style="color: #0000FF; ">&gt;</span>word2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Word</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Symbol</span><span style="color: #0000FF; ">&gt;</span>wc'd2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Symbol</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">DataList</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span>n.<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span>中文啊<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span>v.<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Category</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span>测试啊<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Meaning</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">DataList</span><span style="color: #0000FF; ">&gt;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">Item</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">WordList</span><span style="color: #0000FF; ">&gt;</span><br />
<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; "><a title="LAC" href="www.cppblog.com/codejie">LingosHook Android Client</a></span><span style="color: #0000FF; ">&gt;</span>&nbsp; &nbsp;&nbsp;<br />
</div>
<br />&nbsp; &nbsp; 有兴趣的可以下面看看俺怎么用JAVA解析的xml的(调试文件,不是最终的)<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_003218" onclick="this.style.display='none'; Code_Closed_Text_003218.style.display='none'; Code_Open_Image_003218.style.display='inline'; Code_Open_Text_003218.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_003218" style="display: none" onclick="this.style.display='none'; Code_Open_Text_003218.style.display='none'; Code_Closed_Image_003218.style.display='inline'; Code_Closed_Text_003218.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_003218" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">importdata.java</span><span id="Code_Open_Text_003218" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;importXml(<span style="color: #0000FF; ">final</span>&nbsp;String&nbsp;file,&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;overwrite)&nbsp;{<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;ifile&nbsp;=&nbsp;new&nbsp;File(file);<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!ifile.exists())&nbsp;{<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">FileInputStream&nbsp;is&nbsp;=&nbsp;new&nbsp;FileInputStream(ifile);</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;<span style="color: #0000FF; ">this</span>.getAssets().open(file);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlPullParserFactory&nbsp;factory&nbsp;=&nbsp;XmlPullParserFactory.newInstance();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlPullParser&nbsp;xp&nbsp;=&nbsp;factory.newPullParser();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xp.setInput(is,&nbsp;"UTF-8");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataFormat.Data&nbsp;data&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;DataFormat.Data();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;defDict&nbsp;=&nbsp;"Default&nbsp;Dictionary";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;type&nbsp;=&nbsp;xp.getEventType();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(type&nbsp;!=&nbsp;XmlPullParser.END_DOCUMENT)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(type&nbsp;==&nbsp;XmlPullParser.START_TAG)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("DefaultDict"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defDict&nbsp;=&nbsp;xp.getText();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("WordList"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(type&nbsp;==&nbsp;XmlPullParser.START_TAG)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(xp.getName().equals("Item"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getItem(xp,&nbsp;data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkData(data,&nbsp;defDict);<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(XmlPullParserException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;checkData(Data&nbsp;data,&nbsp;String&nbsp;defDict)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getItem(XmlPullParser&nbsp;xp,&nbsp;DataFormat.Data&nbsp;data)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Dict&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("Dict"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.dict&nbsp;=&nbsp;xp.getText();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Word</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("Word"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.word&nbsp;=&nbsp;xp.getText();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Symbol</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("Symbol"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.symbol&nbsp;=&nbsp;xp.getText();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">DataList</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("DataList"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(type&nbsp;==&nbsp;XmlPullParser.START_TAG)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>(xp.getName().equals("Item"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getWordData(xp,&nbsp;data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkWordData(data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">type&nbsp;=&nbsp;xp.next();</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(XmlPullParserException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;checkWordData(Data&nbsp;data)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getWordData(XmlPullParser&nbsp;xp,&nbsp;Data&nbsp;data)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Category</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;type&nbsp;=&nbsp;xp.nextTag();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("Category"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.category.add(xp.getText());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">Meaning</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.nextTag();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(xp.getName().equals("Meaning"))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.meaning.add(xp.getText());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;=&nbsp;xp.next();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(XmlPullParserException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(IOException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span></div><br />&lt;---- 长舒一口气的分割线 ----&gt;<br /><br />&nbsp; &nbsp; 文档总算写完了,可以轻松下了..结果,发现两个bug...唉,这两天就fix,1.1.1马上就不得不更新了...<img src ="http://www.cppblog.com/codejie/aggbug/188560.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-08-28 23:17 <a href="http://www.cppblog.com/codejie/archive/2012/08/28/188560.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC: 冲动是魔鬼</title><link>http://www.cppblog.com/codejie/archive/2012/08/18/187603.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Sat, 18 Aug 2012 08:40:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/08/18/187603.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/187603.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/08/18/187603.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/187603.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/187603.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 昨晚最终搞定了LAC的新的导入DB3文件的方式，还算顺利，于是今天继续研究XML文件。。。突然，就那么突然的冲动－－LAC不能只是个单纯的LingosHook的Android Client，它应该有它自己的特性！于是就有了。。。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-bigchange.png" border="0" alt="" width="712" height="288" /><br /><br />&nbsp; &nbsp; 上图中，Bold部分是当前LAC已经实现的功能（&#8217;Remote Import'部分写好了），其它就是冲动计划新增的功能了，如何。。。<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 新功能影响最大的本地数据库，整个表结构应该都要改了。。。简单算算，不日夜敲个两月，是完成不了的了。。。冲动果然是魔鬼！<br /><br /><br />&lt;---- 喜滋滋的分割线 ----&gt;<br /><br />&nbsp; &nbsp; LingosHook最近的版本1.6.618到今天正好发布两个月（也许是两个月零一天。。。）了，下载量达到1500＋了啊！！算算可就是每小时至少就有一次下载啊，这是什么样流量啊。。。哈哈哈。。。心满意足啊。。。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lh_618dl.png" border="0" alt="" width="846" height="88" /><br /><br />&nbsp; &nbsp; 不信<a href="http://code.google.com/p/lingoshook/downloads/list">点这里自己看</a>，俺没有吹牛哦，俺保证没做广告，俺保证俺自己没有乱点哦。。。哇哈哈。。。(LAC的就不要看了，惨不忍睹啊。。。）<img src ="http://www.cppblog.com/codejie/aggbug/187603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-08-18 16:40 <a href="http://www.cppblog.com/codejie/archive/2012/08/18/187603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC：1.0.0 Release</title><link>http://www.cppblog.com/codejie/archive/2012/08/02/186053.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 02 Aug 2012 09:31:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/08/02/186053.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/186053.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/08/02/186053.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/186053.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/186053.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp;&nbsp;<span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">&nbsp;<a href="http://www.cppblog.com/codejie/archive/2012/02/03/164888.html">LAC</a>终于可以见人了。。。不罗嗦，这次跟LingosHook不同，咱有<a href="http://www.cppblog.com/codejie/archive/2012/02/03/164888.html">详细文档</a>！想直接下载的，<a href="http://www.cppblog.com/codejie/archive/2010/07/23/108996.html">看这里</a>！<br /><br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac-main21.png" border="0" alt="" width="183" height="297" /></span><img src ="http://www.cppblog.com/codejie/aggbug/186053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-08-02 17:31 <a href="http://www.cppblog.com/codejie/archive/2012/08/02/186053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : '记忆'算法</title><link>http://www.cppblog.com/codejie/archive/2012/07/26/185254.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 26 Jul 2012 14:55:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/07/26/185254.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/185254.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/07/26/185254.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/185254.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/185254.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 前天晚上检查LAC代码,总觉得其使用的'记忆'算法有问题,调试很久,火起,重新实现了一个...<br />
<br />
&nbsp; &nbsp; 所谓'记忆'算法,最著名的应该是那个什么'艾宾浩斯记忆曲线'了,可惜咱数学不好,没看懂,只好自己弄个简单的了...<br />
&nbsp; &nbsp; '记忆'算法由四个参数组合而成,很简单 -- 一个<strong>时间间隔</strong>参数乘以由<strong>前次分数</strong>,<strong>本次分数</strong>以及<strong>结果判定</strong>确定的三维坐标,即可获得<strong>下次时间</strong>.<br />
&nbsp; &nbsp; 三维坐标系如下:<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">float</span>&nbsp;rateTable[4][4]&nbsp;=&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;1.75f,&nbsp;0.80f,&nbsp;0.45f,&nbsp;0.17f&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;1.50f,&nbsp;1.25f,&nbsp;0.55f,&nbsp;0.20f&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;1.00f,&nbsp;0.80f,&nbsp;0.45f,&nbsp;0.20f&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;0.80f,&nbsp;0.50f,&nbsp;0.30f,&nbsp;0.17f&nbsp;}<br />
};<br />
<br />
<span style="color: #0000FF; ">int</span>&nbsp;judgeTable[2][4]&nbsp;=&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;0,&nbsp;1,&nbsp;1,&nbsp;2&nbsp;},<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;2,&nbsp;2,&nbsp;3,&nbsp;3&nbsp;}&nbsp;<br />
};</div>&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 计算方法简化如下:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->check&nbsp;=&nbsp;judgeTable[judge][preScore];<br />next&nbsp;=&nbsp;((last&nbsp;!=&nbsp;0)&nbsp;?&nbsp;(updated&nbsp;-&nbsp;last)&nbsp;:&nbsp;7)&nbsp;*&nbsp;rateTable[curScore][check]&nbsp;+&nbsp;updated&nbsp;+&nbsp;1;</div><br />&nbsp; &nbsp; 咱也不知道这个算法好不好,所有系数完全自己推倒杜撰的(该不该弄个专利去呢...),为了表达自己对'严谨科学态度'的敬意,做了如下测试,请看各位报表..<br /><br />&nbsp; &nbsp; 1. 假定某个单词从第一次就选择'认识',且判定为'正确'(意思是自己判定'认识'此单词的判断是正确的),那么此单词连续九次出现的时间以及两次间时间间隔趋势如下图所示: (X轴为单词出现是时间,Y轴为两次出现时间的间隔)<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-1.png" border="0" alt="" width="498" height="304" /><br /><br />&nbsp; &nbsp; 从图表中可以看出,一个'熟悉'的单词,出现的间隔会越来越长.这复合基本逻辑--熟悉的单词不用经常记忆.<br /><br />&nbsp; &nbsp; 2. 相反,假定某个单词起始为'熟悉',但在其后选择中,选择'没概念',且判定为'错误'(意思是自己确实对此单词'没概念',)(这里跟前面的解释一起理解时,有点乱...),那么此单词连续九次出现的 时间间隔趋势如下:<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-2.png" border="0" alt="" width="500" height="311" /><br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 由上图可见,随着选择'没概念'的次数增加,单词出现的间隔不断变小,直至为1.<br /><br />&nbsp; &nbsp; 3. 下面趋势图显示了当一个单词每次都选择'熟悉',但判定依次为'正确'和'错误',连续九次出现后的时间间隔变化:<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-3.png" border="0" alt="" width="496" height="303" /><br /><br />&nbsp; &nbsp; 4. 最后一个则是单词每次选择'没概念'但判定依次为'正确'和'错误'的时间间隔趋势图:<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/st-4.png" border="0" alt="" width="496" height="303" /><br /><br /><br />&nbsp; &nbsp; '熟悉度'一共有4级,且有两个参数,加上'判定'参数的2级,三个参数组合起来的系数关系就是前面的两个数组,我是没敢测试每种组合的趋势,挑了上面四个最简单的可能,其他的大家有兴趣自己看吧...欢迎指点,欢迎拍砖,但不许打脸...<br /><br />&nbsp; &nbsp; &lt;---- 判定意思好混乱的分割线 ----&gt;<br /><br />&nbsp; &nbsp; 刚才突然想起一个好方法,可以屏蔽'判定'概念,这就去改...<img src ="http://www.cppblog.com/codejie/aggbug/185254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-07-26 22:55 <a href="http://www.cppblog.com/codejie/archive/2012/07/26/185254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LAC : Example Database  is ready</title><link>http://www.cppblog.com/codejie/archive/2012/07/20/184255.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 19 Jul 2012 16:10:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/07/20/184255.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/184255.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/07/20/184255.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/184255.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/184255.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; <a href="http://www.cppblog.com/codejie/archive/2012/02/01/164729.html">LAC</a>所需的database实例终于搞好了...<br />&nbsp; &nbsp; 为了这个实例,还特意用C++写了个分析程序 -- Txt2Html.自动解析加上人眼检查,还是搞定了!整整5个晚上啊...才几天没用C++啊,竟然忘记mutable这个关键字了...<br />&nbsp; &nbsp; 如果不再被我测出新bug,或者想起新功能,LAC再改动一些字符串什么的,应该可以release了! 先上图,剧透下,也展示一下今晚database的成果.<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac_w_list.png" border="0" alt="" width="181" height="280" /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHookAndroidClient/lac_html.png" border="0" alt="" width="182" height="284" /><br /><br />&nbsp; &nbsp; 喜欢不...这只是LAC的'冰山一角'噢...哇哈哈...<img src ="http://www.cppblog.com/codejie/aggbug/184255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-07-20 00:10 <a href="http://www.cppblog.com/codejie/archive/2012/07/20/184255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : 值得纪念的一天</title><link>http://www.cppblog.com/codejie/archive/2012/07/16/183808.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 16 Jul 2012 15:51:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/07/16/183808.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/183808.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/07/16/183808.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/183808.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/183808.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 对于LingosHook来说,2012年7月13日这天很值得纪念 ---- LingosHook到此日,总计收到的捐赠数超过了<strong>RMB100</strong>了!!!<br />
<br />
&nbsp; &nbsp; 在此再次感谢所有购买捐赠插件的<a href="http://www.cppblog.com/codejie/archive/2011/03/17/142091.html">捐赠者们</a>! 谢谢,谢谢...谢谢你们对LingosHook的使用和支持! 同时也感谢所有的使用者们! &nbsp;是你们所有人的每一次<a href="http://code.google.com/p/lingoshook/downloads/list">下载</a>, 刺激着LingosHook的更新!<br />
<br />
&nbsp; &nbsp;哈哈,哈哈...真的很开心! <br />
<br />&nbsp; &nbsp; 从第一个版本0.5.100的发布时间2010年3月5日算起, &nbsp;LingosHook一共发布了30个版本了...<br />&nbsp; &nbsp; 从2011年3月17日,haolly热心购买第一次插件开始算起, 正好16个月过去了...<br />&nbsp; &nbsp; 如果从有想法开始算起, LingosHook应该已经存在三年了...<br /><br />&nbsp; &nbsp; ....<br />&nbsp; &nbsp; ....<br />&nbsp; &nbsp; ....<br /><br />&nbsp; &nbsp; 与LingosHook一起的每个喜悦的夜晚或是郁闷的夜晚,也就这么过去了...本来想好好感慨一下的冲动,也忽然平静了...啥也不说了,感谢大家了!<br />&nbsp; &nbsp; 下面就是LingosHook捐赠者插件中的'彩蛋',敬请欣赏!<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_dinator.png" border="0" alt="" width="850" height="619" /><br /><br />&nbsp; &nbsp; &lt;---- 剧透的分割线 ----&gt;<br />
&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 争取这两周能发布新版的LAC! 这段日子一直在忙这个,工作上的新项目很忙,也就一直敲到现在...<br />&nbsp; &nbsp; 实际LAC三周前就写好了,目前在做一个计划同步发布的单词数据库. 创建这个数据库的目的是,一来可以做测试实例使用,二来对于不使用LingosHook的人来说,也可以直接单独使用LAC了; 这也意味着,LAC可以单独作为一个'记忆'应用存在的...<br />&nbsp; &nbsp; LAC是什么?<a href="http://www.cppblog.com/codejie/archive/2012/02/01/164729.html">看这里</a>...用Android兄弟姐妹们马上可以尝鲜了...使用IOS的各位吗..抱歉啊,俺没有珍惜有MacBook Pro的日子...现在只有等俺存够了银子再说吧...<br />
&nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp;&nbsp;<img src ="http://www.cppblog.com/codejie/aggbug/183808.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-07-16 23:51 <a href="http://www.cppblog.com/codejie/archive/2012/07/16/183808.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Release 1.6.061</title><link>http://www.cppblog.com/codejie/archive/2012/06/01/177047.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Fri, 01 Jun 2012 07:21:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/06/01/177047.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/177047.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/06/01/177047.html#Feedback</comments><slash:comments>32</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/177047.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/177047.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; LingosHook新版1.6.061终于可以赶上六一发布了。。。六一快乐！<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_v_1.6.061.png" border="0" alt="" width="674" height="550" /><br /><br />&nbsp; &nbsp; 这个版本中，有如下更新：<br />&nbsp; &nbsp; 1. 支持将Tag下所有单词移动到另外Tag下，<a href="http://www.cppblog.com/codejie/archive/2012/05/09/174021.html">具体说明请看这里</a>；<br />&nbsp; &nbsp; 2. 支持HTML数据优化，<a href="http://www.cppblog.com/codejie/archive/2012/05/16/174992.html">具体说明请看这里</a>；<br />&nbsp; &nbsp; 3. 更新WordExport插件，<a href="http://www.cppblog.com/codejie/archive/2012/05/30/176762.html">强力说明在这里</a>；<br />&nbsp; &nbsp; 4. 修正&#8216;数据添加Bug'，并新增DataCleanup插件用于清理无用数据，<a href="http://www.cppblog.com/codejie/archive/2012/05/31/176959.html">详情请看这里</a>；<br /><br /><br />&nbsp; &nbsp; &nbsp;就这些更新，辛苦各位下载了，有任何问题，请回贴吐槽。。。源码依然在<a href="http://code.google.com/p/lingoshook/">这里</a>。<br /><br />&nbsp; &nbsp; &nbsp;这次安装包里面包含如下三个插件，敬请关注。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_v6_plugins.png" border="0" alt="" width="452" height="111" /><br /><br />&nbsp; &nbsp; 虽然更新条目看着不多，但这次对TinyHtmlParser做了大量改动，不然没法搞定HTML优化和Word导出的变态需求，当然了，我也被累的半死了。。。<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 这次更新还导致一个大问题－－ForDonator插件无法正常使用了。。原因是插件接口改动。因此，各位Donor，不好意思啊，这次要辛苦你们更新插件了。。。我会一一发mail给大家的，有任何问题请来信啊。。。<br /><br /><br />&lt;---- 偷懒的分割线 ----&gt;<br />&nbsp; &nbsp; 能这么快就Release，得益与两个可以偷懒的原因：<br />&nbsp; &nbsp; 一是，HTML优化配置对话框内容未翻译，因为这个对话框是跟WordExport插件共用的，而插件从来都是不翻译的（理直气壮啊。。。），所以，省了很多时间。。。<br />&nbsp; &nbsp; 二是，ForDonator插件接口问题，比想象的简单，改了个接口版本号就OK了，所以。。。昨晚都可以有时间GAME一把了。。。<br /><br />&lt;---- 休假的分割线----&gt;<br />&nbsp; &nbsp; 这个版本之后，照例要休息一段时间，主要是新的工作下周应该开始了，没法连续更新了（赶着发布新版本也有这个原因的）。后面LingosHook的更新应该会倾向&#8217;背单词&#8216;功能了，那也是个大头啊。。。<img src ="http://www.cppblog.com/codejie/aggbug/177047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-06-01 15:21 <a href="http://www.cppblog.com/codejie/archive/2012/06/01/177047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Data Clean-up Plugins</title><link>http://www.cppblog.com/codejie/archive/2012/05/31/176959.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 31 May 2012 10:20:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/05/31/176959.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/176959.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/05/31/176959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/176959.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/176959.html</trackback:ping><description><![CDATA[<br />
&nbsp; &nbsp; 真正的程序员，敢于面对自己的BUGs！！<br />
&nbsp; &nbsp; 这话说的多么地&#8217;正气凛然&#8216;啊。。。实际上应该是&#8217;自作孽，不可活&#8216;啊。。。找了一晚，终于发现<a href="http://www.cppblog.com/codejie/archive/2012/05/30/176762.html">昨天提到</a>的&#8217;删除单词Bug&#8216;实际应该是&#8217;添加单词Bug'：当添加新单词，并开启词典分析选项时，LingosHook会过滤掉已经存在的单词，以防止重复记录；设计的多好，但问题是，如果单词重复，相应的HTML数据也不应该保存啊。。。这个忘记写了。。。如下代码：<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;CDictObject::SaveResult(<span style="color: #0000FF; ">const</span>&nbsp;std::wstring&amp;&nbsp;html,&nbsp;TResultMap&amp;&nbsp;result)<br />
<span style="color: #008080; ">&nbsp;2</span>&nbsp;{<br />
<span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(FilterResult(result)&nbsp;!=&nbsp;0)<br />
<span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />
<span style="color: #ff0000; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000; ">if</span><span style="color: #ff0000; ">(result.size()&nbsp;</span><span style="color: #ff0000; ">==</span>&nbsp;<span style="color: #ff0000; ">0</span><span style="color: #ff0000; ">)</span><br />
<span style="color: #ff0000; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000; ">return</span>&nbsp;<span style="color: #ff0000; ">0</span><span style="color: #ff0000; ">;</span><br />
<span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;srcid&nbsp;=&nbsp;-1;<br />
<span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(SaveSrcData(html,&nbsp;srcid)&nbsp;!=&nbsp;0)<br />
<span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />
<span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(SaveResult(srcid,&nbsp;result)&nbsp;!=&nbsp;0)<br />
<span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
<span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RemoveSrcData(srcid);<br />
<span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />
<span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />
<span style="color: #008080; ">16</span>&nbsp;}</div><br />&nbsp; &nbsp; 是的，红色部分忘记了。。。<br /><br />&nbsp; &nbsp; 目前看，这个Bug在很早就应该存在了，大约都可以追溯到1.2.001！当同一个单词被多次查询时，Bug会导致LingosHook存入一条完全没用的HTML数据到SrcDataTable表中。唉，LingosHook长期以来一直在致力于减少数据的存储，没想这一个Bug。。。唉，丢脸了。。。<br />&nbsp; &nbsp; 做错事，是要付出代价的！为了修正Bug导致的错误存储，昨晚决定为此专门写个插件－－Data Clean-up！<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_dc_dlg.png" border="0" alt="" width="624" height="216" /><br /><br />&nbsp; &nbsp; Data Clean-up插件能够备份和自动清理无用数据。整整3个小时，每分钟不少于敲打120个字母的速度下，终于搞定了。。。使用方法如下：<br /><br />&nbsp; &nbsp; 1. 备份：为了防止可能的错误，建议备份原有数据文件；使用插件，点击&#8216;Backup&#8217;即可。插件自动备份LingosHook.db3文件到以当前日期为后缀的新的db3文件中，如下图所示。<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_dc_backup.png" border="0" alt="" width="626" height="267" /><br /><br /><br />&nbsp; &nbsp; 2. 清理：插件自动查找并清理无用数据，点击&#8216;Clean-up'即可，如下图所示：<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_dc_clean.png" border="0" alt="" width="626" height="336" /><br />&nbsp;&nbsp;<br />&nbsp; &nbsp; 看看，超过一半以上的无用记录，多么可怕的Bug啊。。。从理论上来说，无用记录范围会在0到无穷大间。。。（有本书叫做《从零到无穷大》很好看。。。）<br /><br />&nbsp; &nbsp; 到此，Bug修正并实现清除方法，可以瞑目了。。。插件随下个LingosHook版本一起发布，不好意思了。。。<br /><br />&nbsp; &nbsp; 突然发现，今晚要是能处理完FonDonator插件，再加班加点测试下，也许没准还真能赶上过个六一呢。。。哇哈哈。。。<br />&nbsp; &nbsp;&nbsp;<br /><img src ="http://www.cppblog.com/codejie/aggbug/176959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-05-31 18:20 <a href="http://www.cppblog.com/codejie/archive/2012/05/31/176959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Powerful New WordExport Plugin is DONE</title><link>http://www.cppblog.com/codejie/archive/2012/05/30/176762.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 30 May 2012 07:59:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/05/30/176762.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/176762.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/05/30/176762.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/176762.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/176762.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 敲了两周，新版的WordExport插件终于搞定了！支持三种过滤，五种导出方式，强大到前所未有啊～～（自我感觉很好!)&nbsp;<br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; 看图了！<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_dlg_3.png" border="0" alt="" width="468" height="639" /><br /><br />&nbsp; &nbsp; 如何？界面跟<a href="http://www.cppblog.com/codejie/archive/2012/05/21/175615.html">前面</a>提到的不一样了，将HTML导出细分为三种了～（蛋疼不。。）<br /><br />&nbsp; &nbsp; 从界面中可以看出，插件支持单词、Tag和词典三种导出过滤设置。<br />&nbsp; &nbsp; 1. 单词过滤：全部或者符合指定前后缀条件的单词；<br />&nbsp; &nbsp; 2. Tag过滤：全部或指定Tag下的单词；<br />&nbsp; &nbsp; 3. 词典过滤：全部或指定词典下的单词；这个说明下，由于大家使用的词典是不一样的，LingosHook是无法获取全部词典数据的。当需要设置此条件时，请先在Lingoes中查询指定词典的ID,再拷贝到此处即可。可参看如下图获取词典ID信息。<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_dict_id.png" border="0" alt="" width="485" height="205" /><br /><br /><br />&nbsp; &nbsp; 现在具体说下五种不同导出方式。<br /><br />&nbsp; &nbsp; 1. 带索引，单HTML格式导出：如下图所示，左侧为单词列表，右侧为解释数据，当点击单词时，右侧窗口会自动跳到指定单词解释处；<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_is.png" border="0" alt="" width="715" height="522" /><br />&nbsp; &nbsp; 输出目录中，LH_Export.html为主文件，i.html是索引文件，就是单词列表文件，data.html是解释数据文件。<br /><br />&nbsp; &nbsp; 2. 带索引，多HTML格式导出：下图中，左侧为单词索引列表，右侧为解释数据，点击单词是，右侧窗户会自动显示单词解释；<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_im.png" border="0" alt="" width="717" height="525" /><br /><br />&nbsp; &nbsp;&nbsp;与前者不同的是，单词解释不是放置在同一文件中，而是以单词为前缀，'.html'为缀的文件中。 当多个单词使用同一解释是，解释文件只有一份，比如set和setting，都指向set.html文件。输出类似如下图片显示：<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_of.png" border="0" alt="" width="255" height="235" /><br />&nbsp; &nbsp;&nbsp;<br />&nbsp; &nbsp; d.html文件依然存在，此时即为LingosHook的主页文件。<br /><br /><br />&nbsp; &nbsp; 3. 无索引，单HTML格式导出：所有数据都输出到同一文件LH_Export.html中，包括单词和解释；如下图所示，单词列举在解释前面，单词间由较粗分割线分离。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_h.png" border="0" alt="" width="715" height="523" /><br /><br />&nbsp; &nbsp; 4. LAC格式导出：这个不多说，LAC（LingosHook Android Client）相关内容<a href="http://www.cppblog.com/codejie/archive/2012/02/01/164729.html">请看这里</a>；由于WordExport插件直接能够导出LAC格式数据，ClientDataExport插件就没用了，不再更新了。<br /><br />&nbsp; &nbsp; 5. 文本格式导出：TXT格式是为了保留WordExport插件的最初功能，导出没变化，使用可以参看<a href="http://www.cppblog.com/codejie/archive/2011/01/31/139645.html">原来的贴子</a>。选择分隔符，请点击&#8216;Separator&#8217;按钮，会弹出如下对话框供选择使用。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_sep.png" border="0" alt="" width="226" height="229" /><br /><br /><br />&nbsp; &nbsp; 注：<br />&nbsp; &nbsp; 1. 导出需要指定导出路径（不检查路径合法性和文件是否存在），导出的主文件使用同一前缀：LH_Export －－ LH_Export.html/LH_Export.db3/LH_Export.txt;<br />&nbsp; &nbsp; 2. 按钮&#8216;Optimizer&#8217;是用于导出时化HTML优化配置的，<a href="http://www.cppblog.com/codejie/archive/2012/05/16/174992.html">具体说明请参看这里</a>。<br /><br /><br /><br />&nbsp; &nbsp; 就这么多，敲死我了。。。<br /><br /><br />&lt;---- 疲惫的分割线 ----&gt;<br />&nbsp; &nbsp;<br />&nbsp; &nbsp; 本来计划这个六一发布新版本的，那个<a href="http://www.cppblog.com/codejie/archive/2012/02/14/165581.html">许诺的&#8216;支持添加自定义解释&#8217;</a>这次真的搞不定了，但就是放弃这个，怕也来不及了。。。主要还有三个问题没解决：<br />&nbsp; &nbsp; 1. 界面语言转换；<br />&nbsp; &nbsp; 2. 单词删除Bug;<br />&nbsp; &nbsp; 3. 插件接口更新issue；<br /><br />&nbsp; &nbsp; &nbsp;为了搞定新的WordExport插件功能，更新了LingosHook的插件接口，本来没啥，因为就那么几个插件，还都是随着LingosHook版本一起release的；但后来才发现一个大大的问题：<a href="http://www.cppblog.com/codejie/archive/2011/03/15/141425.html">ForDonator插件</a>都是单独分发的啊。。。这次更新，将导致所有Donator的这个插件不能正常运行了。。。着急很久，但为了这个强大的WordExport，看来也只能辛苦各位Donator更新下了。。。不好意思啊。。。<br /><br /><br />&nbsp; &nbsp; &nbsp;截了张大图，想大家了解下，LingosHook近来一直在敲啊敲，没停过。。。等这个版本稳定了，会休息一段时间了。。。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_codechange.png" border="0" alt="" width="988" height="834" /><img src ="http://www.cppblog.com/codejie/aggbug/176762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-05-30 15:59 <a href="http://www.cppblog.com/codejie/archive/2012/05/30/176762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : Is this you wanted?</title><link>http://www.cppblog.com/codejie/archive/2012/05/24/176018.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Thu, 24 May 2012 07:30:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/05/24/176018.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/176018.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/05/24/176018.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/176018.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/176018.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; 将所有的数据都集中到一起，是不是你想要的呢？<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_html.png" border="0" alt="" width="356" height="675" /><br /><br /><br />&nbsp; &nbsp; 我更喜欢IMG也被过滤后的样子。。。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_html_2.png" border="0" alt="" width="356" height="706" /><br /><br /><br />&nbsp; &nbsp; <a href="http://www.cppblog.com/codejie/archive/2012/05/21/175615.html">新版WordExport插件</a>正在实现中。。。<img src ="http://www.cppblog.com/codejie/aggbug/176018.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-05-24 15:30 <a href="http://www.cppblog.com/codejie/archive/2012/05/24/176018.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : New WordExport Plugin</title><link>http://www.cppblog.com/codejie/archive/2012/05/21/175615.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Mon, 21 May 2012 09:58:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/05/21/175615.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/175615.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/05/21/175615.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/175615.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/175615.html</trackback:ping><description><![CDATA[<br /><br />&nbsp; &nbsp; 新版的WordExport插件如下，喜好不。。。<br /><br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_export_dlg.png" border="0" alt="" width="356" height="553" /><img src ="http://www.cppblog.com/codejie/aggbug/175615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-05-21 17:58 <a href="http://www.cppblog.com/codejie/archive/2012/05/21/175615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>LingosHook : HTML Optimum</title><link>http://www.cppblog.com/codejie/archive/2012/05/16/174992.html</link><dc:creator>codejie</dc:creator><author>codejie</author><pubDate>Wed, 16 May 2012 07:09:00 GMT</pubDate><guid>http://www.cppblog.com/codejie/archive/2012/05/16/174992.html</guid><wfw:comment>http://www.cppblog.com/codejie/comments/174992.html</wfw:comment><comments>http://www.cppblog.com/codejie/archive/2012/05/16/174992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/codejie/comments/commentRss/174992.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/codejie/services/trackbacks/174992.html</trackback:ping><description><![CDATA[<br />&nbsp; &nbsp; &#8216;HTML Optimum&#8217;敲完了，功能作用不多，但代码敲起来还是满累啊。。。<br />&nbsp; &nbsp; 这个功能可以指定过滤掉词典HTML中对于LingosHook无用的数据，比如链接、事件处理等等；以此可以减少LingosHook的数据存储空间，理论上，可以减少15％到100％，看怎么配置了，比如，过滤全部的Tag，Attribute和Value。。。<br />&nbsp; &nbsp; 功能最初来自<a href="http://www.cppblog.com/codejie/archive/2012/02/01/164729.html">LAC</a>项目中的&#8216;Client Data Export&#8217;插件，本来没那么复杂，应用指定过滤那么几个Tag，Attribute什么的就可以了，但咱就是有&#8216;开放偏执症&#8217;－－结果非弄个了个可以配置的对话框来，这样大家可以根据自己的喜好来设置想过滤的内容了。。。（蛋疼不。。。）<br /><br />&nbsp; &nbsp; 上图先。<br /><br />&nbsp; &nbsp; 1. 复杂的Optimum配置对话框(我觉得是LingosHook所有对话框中最好看的一个。。。&nbsp;)<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_hodlg.png" border="0" alt="" width="461" height="570" /><br /><br />&nbsp; &nbsp; HTML中的元素基本来说可以分为三类，Tag，Attribute和Value（注释不提，LingosHook自动过滤掉了），这个就不多解释了。在对话框中，将需要过滤（剔除）元素名称加入到相应的列表中即可。需要说明的是，元素名称是区分大小写的。在LingosHook中，所有的Tag都是大写的，比如要过滤图片，需要添加的是IMG。<br /><br />&nbsp; &nbsp; 左下的&#8216;Use Default Configuration&#8217;按钮是用于恢复或者使用应用缺省配置的，其过滤配置即为当前对话框中的项目，列表如下代码：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_TAG,&nbsp;wxT("A"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_TAG,&nbsp;wxT("PARAM"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_TAG,&nbsp;wxT("EMBED"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_TAG,&nbsp;wxT("OBJECT"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_ATTRIB,&nbsp;wxT("class"));&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_ATTRIB,&nbsp;wxT("title"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_ATTRIB,&nbsp;wxT("onclick"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_ATTRIB,&nbsp;wxT("onmouseout"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_ATTRIB,&nbsp;wxT("onmouseup"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_ATTRIB,&nbsp;wxT("onmousedown"));<br />&nbsp;&nbsp;&nbsp;&nbsp;CDocumentOutputObject::AddKey(&amp;m_mapHtmlOptimumKey,&nbsp;CDocumentOutputObject::KT_ATTRIB,&nbsp;wxT("onselectstart"));</div>&nbsp; &nbsp; <br />&nbsp; &nbsp; 此按钮存在的原因是－－实际不建议大家自己配置的，因为乱配置有风险导致LingosHook无法正常解析数据的。。。现在大家知道有多蛋疼了吧 。。。提供配置只是想让大家看看，LingosHook的HTML处理功能有多猛，而这个HTML解析是咱自己写的，哇哈哈。。。后面我会贴些不同配置下的解析结果对比图，供大家欣赏。<br /><br />&nbsp; &nbsp; 2. Setting页面中新增的配置项<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_ho_set.png" border="0" alt="" width="410" height="75" /><br />&nbsp; &nbsp; 这个配置目前是缺省开启的，虽然会导致数据入库变慢点，但可以节省不少存储空间啊。。。<br /><br /><br />&nbsp; &nbsp; 下面是不同过滤配置下的对比：<br /><br />&nbsp; &nbsp; 1. 无过滤 ：&nbsp;数据库中HTML数据大小为3871字节；&nbsp;<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_ho_1.png" border="0" alt="" width="445" height="127" /><br /><br /><br />&nbsp; &nbsp; 2. 缺省配置：HTML数据大小为3162字节；<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_ho_2.png" border="0" alt="" width="445" height="119" /><br />&nbsp; &nbsp; 可以发现，给无过滤情况下，在显示上是没有区别的；<br /><br />&nbsp; &nbsp; 3. 缺省配置加上IMG过滤 ： HTML数据大小为2221字节；此配置方式即为<a href="http://www.cppblog.com/codejie/archive/2012/02/01/164729.html">LAC</a>数据导出配置；<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_ho_3.png" border="0" alt="" width="446" height="114" /><br />&nbsp; &nbsp; 没图片，也还好的吧。。。<br /><br />&nbsp; &nbsp; 4. 过滤全部Tag和Attribtue ： HTML数据大小为179字节；<br /><img src="http://www.cppblog.com/images/cppblog_com/codejie/LingosHook/lh_ho_4.png" border="0" alt="" width="449" height="90" /><br /><br />&nbsp; &nbsp; 这种配置，理论上就是提取HTML中的&#8217;纯文本&#8216;，过程中LingosHook会产生一个异常，因为数据不再是HTML格式，解析时会出错的。<br /><br />&nbsp; &nbsp; HTML Optimum功能就是这样的，神奇不。。。<br /><br />&lt;----意外发现的分割线----&gt;<br />&nbsp; &nbsp; 分析Lingoes数据时，意外发现实际其应该早有添加生词本的欲望了，只是不知道为什么一直没有实现。不信，看看下面HTML代码。。。<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">TD</span><span style="color: #0000FF; ">&gt;&lt;</span><span style="color: #800000; ">IMG&nbsp;</span><span style="color: #FF0000; ">style</span><span style="color: #0000FF; ">="MARGIN-TOP:&nbsp;0px;&nbsp;MARGIN-LEFT:&nbsp;0px"</span><span style="color: #FF0000; ">&nbsp;id</span><span style="color: #0000FF; ">="dict_remberword_E1C27E806399D047822B6650194A3D32"</span><span style="color: #FF0000; ">&nbsp;onmouseup</span><span style="color: #0000FF; ">="this.style.marginLeft&nbsp;=&nbsp;'-11px'"</span><span style="color: #FF0000; ">&nbsp;onmouseover</span><span style="color: #0000FF; ">="this.style.marginLeft&nbsp;=&nbsp;'-11px'"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #993300; "><strong>title</strong></span><span style="color: #993300; "><strong>="Add&nbsp;the&nbsp;word&nbsp;to&nbsp;notebook"</strong></span><span style="color: #FF0000; ">&nbsp;onmouseout</span><span style="color: #0000FF; ">="this.style.marginLeft&nbsp;=&nbsp;'0px'"</span><span style="color: #FF0000; ">&nbsp;onmousedown</span><span style="color: #0000FF; ">="this.style.marginLeft&nbsp;=&nbsp;'-11px'"</span><span style="color: #FF0000; ">&nbsp;onclick</span><span style="color: #0000FF; ">="window.navigate('app://remberword/E1C27E806399D047822B6650194A3D32-4')&nbsp;;"</span><span style="color: #FF0000; ">&nbsp;border</span><span style="color: #0000FF; ">="0"</span><span style="color: #FF0000; ">&nbsp;src</span><span style="color: #0000FF; ">="file:///C:/Program%20Files%20(x86)/Lingoes/Translator2/dict/image/remberword.png"</span><span style="color: #FF0000; ">&nbsp;width</span><span style="color: #0000FF; ">="22"</span><span style="color: #FF0000; ">&nbsp;height</span><span style="color: #0000FF; ">="11"</span><span style="color: #0000FF; ">&gt;&lt;/</span><span style="color: #800000; ">TD</span><span style="color: #0000FF; ">&gt;</span></div><br />&nbsp; &nbsp; 我以前怎么没注意呢。。。<img src ="http://www.cppblog.com/codejie/aggbug/174992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/codejie/" target="_blank">codejie</a> 2012-05-16 15:09 <a href="http://www.cppblog.com/codejie/archive/2012/05/16/174992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>