今天收到一封來信:
“我的高級鏈路做了一部分了,而且所做的部分在做完之后已經(jīng)及時(shí)保存。但是寫完文檔后關(guān)閉TAU G2的時(shí)候出現(xiàn)死機(jī),我就強(qiáng)行關(guān)閉了TAU G2。以前也經(jīng)常發(fā)生類似的情況,可是重新啟動(dòng)TAU G2是可以打開原來的U2文件的。
可是這回,我再打開U2文件后出現(xiàn)了錯(cuò)誤“Error: TNR0085: XML Parser: no element found (file ://D:\賊魔2\基站項(xiàng)目\LLC\LLC.u2, line 40981).”,和“Information: Session in ::[wpAu0I1UtXILmZZ6zELdUAvL]: TMI0760: Failed to load file D:\賊魔2基站項(xiàng)目\LLC\LLC.”的情況,原來的東西打不開了,而由于我的疏忽沒有備份。因?yàn)槲腋緵]有想到會(huì)出現(xiàn)這種情況。
我高級鏈路已經(jīng)做了相當(dāng)多了,快完成任務(wù)了,而且老師催得又特別緊,我無法想象重新返工會(huì)是多么可怕的事情。附件已經(jīng)給您一塊發(fā)來,不知道您能否把這個(gè)東西恢復(fù)出來。謝謝您了。我現(xiàn)在非常郁悶。”
這的確夠糟糕的。在此提醒大家一定要每天備份程序,最好使用CVS或SourceSafe工具進(jìn)行程序管理。
下面介紹一下我是怎么修復(fù)這個(gè)文件的,當(dāng)然完全的修復(fù)不可能,因?yàn)橛幸徊糠謨?nèi)容沒有存盤,已經(jīng)徹底丟失了,但總歸希望能找回一些,不要徹底重做。.u2文件實(shí)際上是一種XML文件,使用UltraEdit打開就可以看出,大致是這樣的格式:
在XML中,大多數(shù)Tag都是成對出現(xiàn)的,比如<u2></u2>、<Class></Class>等。被破壞的文件沒有了后面的這些行,所以TAU G2打開時(shí)會(huì)報(bào)告錯(cuò)誤。本來想在網(wǎng)上找一個(gè)自動(dòng)修復(fù)XML的工具,不過還沒有找到。找到了一個(gè)小工具XmlShell,它可以檢查XML文件中是否存在著 Tag不封閉的情況。這個(gè)工具很小,不到1M,倒是可以幫助解決問題。首先把.u2文件改名為.xml文件,然后使用XmlShell打開,它會(huì)報(bào)告有一些Tag沒有封閉。將編輯光標(biāo)移動(dòng)到文件尾,輸入“</”。你每次輸入“</”,XmlShell都會(huì)幫助你自動(dòng)封閉Tag,直到出現(xiàn)“</u2>”,所有Tag都封閉了,這時(shí)再用XmlShell檢查文檔,它報(bào)告這是一個(gè)合法的XML文件了。把文件存盤,然后再改回.u2。這時(shí)再使用TAU G2打開文件,TAU G2仍然會(huì)報(bào)告一些錯(cuò)誤,但是這是在Model中已經(jīng)可以看到一些東西了。至于能找回來多少,要看運(yùn)氣。
類似的工具還有不少,如XML Spy或XmLBuddy。
這篇文章快要寫完的時(shí)候收到了回信:“我剛才看了文件,已經(jīng)恢復(fù)了90%,就差2張圖和一些函數(shù)定義。我昨天做的東西也有一部分恢復(fù)出來了。估計(jì)再有半天就可以補(bǔ)齊。如果沒有您,我估計(jì)重新返工得1個(gè)月左右的時(shí)間。”很有成就感。