專利名稱:數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)轉(zhuǎn)換領(lǐng)域,特別是指一種數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的方法及裝置。
背景技術(shù):
寬度碼分多址(Wide-band Code Division Multiple Access,WCDMA)基站(NodeB)軟件的配置數(shù)據(jù)是采用可擴(kuò)展標(biāo)記語言(eXtensible MarkupLanguage,XML)文件的格式進(jìn)行存儲(chǔ)的。配置數(shù)據(jù)用來描述基站的一些配置參數(shù),如單板數(shù)量等。XML提供了用于嚴(yán)格約束存儲(chǔ)格式和邏輯結(jié)構(gòu)的機(jī)制。XML文件的特點(diǎn)是語法完整、結(jié)構(gòu)清晰、可讀性強(qiáng)。為了在基站啟動(dòng)和修改配置數(shù)據(jù)時(shí),能夠?qū)ε渲脭?shù)據(jù)進(jìn)行比較嚴(yán)格的合法性檢查,在XML數(shù)據(jù)中心除了基站啟動(dòng)時(shí)所需的基于配置數(shù)據(jù)的數(shù)據(jù)配置文件外,還有一個(gè)用來定義數(shù)據(jù)配置文件語法的配套語法文件。所述XML數(shù)據(jù)中心用于管理和維護(hù)基站的數(shù)據(jù)配置文件,提供對(duì)基站所有配置數(shù)據(jù)的訪問和存儲(chǔ)。
由于基站在不同的軟件版本之間,不可避免地存在配置數(shù)據(jù)的數(shù)據(jù)節(jié)點(diǎn)的增加、刪除和修改,使得不同軟件版本的配置數(shù)據(jù)不同,進(jìn)而導(dǎo)致不同軟件版本的數(shù)據(jù)配置文件和語法文件存在一定差異。對(duì)于一個(gè)特定的軟件版本,配置數(shù)據(jù)的語法文件是固定不變的,可作為軟件包的一部分,在基站升級(jí)過程中對(duì)該語法文件進(jìn)行自動(dòng)升級(jí),但是對(duì)于數(shù)據(jù)配置文件,不同的基站之間數(shù)據(jù)配置文件也不盡相同。在基站軟件版本升級(jí)前后,需要保持配置數(shù)據(jù)的延續(xù)性,因此,要求基站在完成升級(jí)并啟動(dòng)后,原來的配置數(shù)據(jù)不能改變。如果直接使用老版本的數(shù)據(jù)配置文件,老版本的數(shù)據(jù)配置文件與新版本的語法文件會(huì)不匹配,使得語法校驗(yàn)失敗,因此,就需要在基站軟件升級(jí)的過程中對(duì)數(shù)據(jù)配置文件進(jìn)行同步升級(jí),這樣就引入了配置數(shù)據(jù)的平滑升級(jí)問題。配置數(shù)據(jù)的平滑升級(jí)是指基站在下載軟件包并激活后,配置數(shù)據(jù)能夠從老版本升級(jí)至新版本,即必須保持升級(jí)前的配置數(shù)據(jù),老版本的配置數(shù)據(jù)在新版本中還存在,并增加新版本的配置數(shù)據(jù),新增配置數(shù)據(jù)的初始取值可采用缺省值;同時(shí)在進(jìn)行版本回退時(shí),能夠繼續(xù)使用升級(jí)前的配置數(shù)據(jù)。
目前,通常采用兩種方法對(duì)基站的配置數(shù)據(jù)進(jìn)行升級(jí),一種是通過后臺(tái)對(duì)基站的配置數(shù)據(jù)進(jìn)行升級(jí);另一種是通過預(yù)留(Reserved)節(jié)點(diǎn)的方式來對(duì)基站的配置數(shù)據(jù)進(jìn)行升級(jí)。
通過后臺(tái)對(duì)基站的配置數(shù)據(jù)進(jìn)行升級(jí)的具體處理過程為基站下載軟件包前,后臺(tái)中的維護(hù)臺(tái)首先將基站的數(shù)據(jù)配置文件上傳至后臺(tái)中的新版本的配置臺(tái),然后新版本的配置臺(tái)將老版本的數(shù)據(jù)配置文件轉(zhuǎn)換為新版本的數(shù)據(jù)配置文件,然后維護(hù)臺(tái)再將新版本的數(shù)據(jù)配置文件下載至基站,最后基站下載軟件包并進(jìn)行激活處理,以上所描述的過程均需要由管理員對(duì)后臺(tái)進(jìn)行相應(yīng)操作才能實(shí)現(xiàn),實(shí)際是一種人工方式的手動(dòng)升級(jí)。對(duì)通過后臺(tái)對(duì)基站的配置數(shù)據(jù)進(jìn)行升級(jí)的方案進(jìn)行改進(jìn)后,可實(shí)現(xiàn)數(shù)據(jù)配置文件上傳、數(shù)據(jù)配置文件的轉(zhuǎn)換和下載的自動(dòng)化,并將這些處理合并到基站的軟件升級(jí)過程中,這樣,在基站軟件升級(jí)過程中就可將老版本的數(shù)據(jù)配置文件自動(dòng)轉(zhuǎn)換為新版本的數(shù)據(jù)配置文件,并保留老版本的配置數(shù)據(jù),實(shí)行配置數(shù)據(jù)的平滑升級(jí)。
如果采用手動(dòng)方式升級(jí)數(shù)據(jù)配置文件,每一步都需要管理員的參與,顯然過于麻煩,更無法實(shí)現(xiàn)基站的批量升級(jí)。如果采用自動(dòng)方式升級(jí)數(shù)據(jù)配置文件,雖然無須管理員的參與,但是要求基站軟件版本與后臺(tái)軟件版本相配套,存在基站軟件版本與后臺(tái)軟件版本依賴性過強(qiáng)的問題。由于基站軟件和后臺(tái)軟件都是分別開發(fā)的,因此,基站軟件和后臺(tái)軟件很難保證配套,而且在實(shí)現(xiàn)上也非常不合理。配置臺(tái)對(duì)數(shù)據(jù)配置文件的轉(zhuǎn)換只是在基站軟件由低版本向高版本轉(zhuǎn)化時(shí),進(jìn)行了一些特殊處理,例如,配置臺(tái)根據(jù)軟件的老版本和新版本,對(duì)需要增加或刪除的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行增加或刪除,這樣,配置臺(tái)每進(jìn)行一個(gè)基站軟件版本的升級(jí),就需要進(jìn)行一些特殊處理,因此,導(dǎo)致每個(gè)配置臺(tái)版本都需要針對(duì)數(shù)據(jù)配置文件的結(jié)構(gòu)改變進(jìn)行特殊處理。由于配置臺(tái)對(duì)數(shù)據(jù)配置文件的轉(zhuǎn)換是通過特殊處理實(shí)現(xiàn)的,具有不可逆性,這樣,在進(jìn)行版本回退時(shí),配置臺(tái)就無法實(shí)現(xiàn)數(shù)據(jù)配置文件的自動(dòng)轉(zhuǎn)換。
通過Reserved節(jié)點(diǎn)的方式來對(duì)基站的配置數(shù)據(jù)進(jìn)行升級(jí)的具體處理過程為在數(shù)據(jù)配置文件的語法文件中對(duì)各種數(shù)據(jù)類型的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行預(yù)留,將這些數(shù)據(jù)節(jié)點(diǎn)稱為Reserved節(jié)點(diǎn),Reserved節(jié)點(diǎn)不具有結(jié)構(gòu)性和層次關(guān)系,所有的Reserved節(jié)點(diǎn)都位于同一層中,每一個(gè)Reserved節(jié)點(diǎn)對(duì)應(yīng)于基站中的一個(gè)配置數(shù)據(jù),在新版本的軟件包中包含一個(gè)本版本相對(duì)于基準(zhǔn)版本軟件、如老版本的軟件增加的Reserved節(jié)點(diǎn)的補(bǔ)丁數(shù)據(jù)文件,基站下載新版本軟件包并激活時(shí),將補(bǔ)丁數(shù)據(jù)文件的新增Reserved節(jié)點(diǎn)自動(dòng)增加到原來的數(shù)據(jù)配置文件中,即新的軟件版本中需要增加和修改數(shù)據(jù)節(jié)點(diǎn)一律采用增加Reserved節(jié)點(diǎn)的方式來實(shí)現(xiàn),新的軟件版本中需要?jiǎng)h除節(jié)點(diǎn)時(shí),為保持原有數(shù)據(jù)結(jié)構(gòu)的完整性,可不做任何處理。這樣,只要在語法文件中定義足夠多的數(shù)據(jù)類型,且不對(duì)每個(gè)數(shù)據(jù)類型包含的數(shù)據(jù)節(jié)點(diǎn)數(shù)量進(jìn)行限制,對(duì)于基站的各個(gè)軟件版本而言,均無需改變配置數(shù)據(jù)的語法文件,因此,不再出現(xiàn)不同軟件版本之間的數(shù)據(jù)配置文件與語法文件不匹配的問題。
但是,由于所有新增的Reserved節(jié)點(diǎn)都在同一層,使得Reserved節(jié)點(diǎn)之間不存在明確的關(guān)聯(lián)性,失去了數(shù)據(jù)節(jié)點(diǎn)間的層次結(jié)構(gòu)性;并且由于新增的Reserved節(jié)點(diǎn)的名稱都是定死的,使得這些數(shù)據(jù)節(jié)點(diǎn)在XML數(shù)據(jù)中心的含義不明確,需要通過配置臺(tái)來獲取這些Reserved節(jié)點(diǎn)所代表的含義;對(duì)于新增的Reserved節(jié)點(diǎn)只是進(jìn)行數(shù)據(jù)節(jié)點(diǎn)類型的語法校驗(yàn),并未對(duì)Reserved節(jié)點(diǎn)的數(shù)量和順序進(jìn)行嚴(yán)格的語法校驗(yàn),這樣就違背了具有嚴(yán)格邏輯結(jié)構(gòu)的XML文件作為數(shù)據(jù)配置文件的初衷。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的方法及裝置,方便、快捷地使數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行平滑轉(zhuǎn)換,并保證轉(zhuǎn)換后的數(shù)據(jù)配置文件具有嚴(yán)格的邏輯結(jié)構(gòu)。
為了達(dá)到上述目的,本發(fā)明提供的數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的方法包括以下步驟A、設(shè)置對(duì)應(yīng)于當(dāng)前軟件版本的滿配置的缺省數(shù)據(jù)配置文件;B、根據(jù)所述缺省數(shù)據(jù)配置文件和轉(zhuǎn)換原則,將原版本的數(shù)據(jù)配置文件轉(zhuǎn)換為當(dāng)前版本的數(shù)據(jù)配置文件。
步驟A中所述滿配置的缺省數(shù)據(jù)配置文件,為包括所有需要配置的數(shù)據(jù)節(jié)點(diǎn)、且數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù)為缺省值的數(shù)據(jù)配置文件。
所述步驟B包括以下步驟B1、對(duì)所述缺省數(shù)據(jù)配置文件進(jìn)行解析,生成當(dāng)前版本缺省配置樹;B2、獲取原版本配置樹和當(dāng)前版本缺省配置樹的根節(jié)點(diǎn);B3、對(duì)位于所述根節(jié)點(diǎn)下的兩棵子樹進(jìn)行比較并根據(jù)轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換;B4、生成當(dāng)前版本的數(shù)據(jù)配置文件。
所述步驟B2與步驟B3之間,進(jìn)一步包括步驟B30判斷原版本配置子樹根節(jié)點(diǎn)是否需要進(jìn)行特殊處理,如果是,調(diào)用節(jié)點(diǎn)處理函數(shù)對(duì)該數(shù)據(jù)節(jié)點(diǎn)進(jìn)行處理,否則,繼續(xù)執(zhí)行步驟B3。
所述步驟B之前,進(jìn)一步包括將需要進(jìn)行特殊處理的數(shù)據(jù)節(jié)點(diǎn)的標(biāo)識(shí)和節(jié)點(diǎn)處理函數(shù)注冊(cè)到特殊處理節(jié)點(diǎn)列表中。
所述步驟B3包括以下步驟B31、判斷原版本配置子樹的根數(shù)據(jù)節(jié)點(diǎn)與當(dāng)前版本缺省配置子樹的根數(shù)據(jù)節(jié)點(diǎn)是否為匹配數(shù)據(jù)節(jié)點(diǎn),如果是,則繼續(xù)執(zhí)行步驟B32,否則,繼續(xù)執(zhí)行步驟B33;B32、當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)的屬性采用匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的屬性,結(jié)束當(dāng)前轉(zhuǎn)換流程;
B33、對(duì)于原版本數(shù)據(jù)配置文件中存在而當(dāng)前版本缺省數(shù)據(jù)配置文件中不存在的數(shù)據(jù)節(jié)點(diǎn),當(dāng)前版本數(shù)據(jù)配置文件中不包含僅原版本數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn),和/或,對(duì)于原版本數(shù)據(jù)配置文件中不存在而當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn),將所述數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中。
步驟B32所述結(jié)束當(dāng)前轉(zhuǎn)換流程之前,進(jìn)一步包括相匹配的數(shù)據(jù)節(jié)點(diǎn)為簡(jiǎn)單元素節(jié)點(diǎn)時(shí),如果原版本數(shù)據(jù)節(jié)點(diǎn)與匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型相同,則當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的原版本數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù);如果原版本數(shù)據(jù)節(jié)點(diǎn)與匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型不同,且當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型均為數(shù)字,當(dāng)原版本數(shù)據(jù)節(jié)點(diǎn)能夠滿足當(dāng)前版本語法文件的數(shù)據(jù)類型范圍要求時(shí),當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的原版本數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù),當(dāng)原版本數(shù)據(jù)節(jié)點(diǎn)無法滿足當(dāng)前版本語法文件的數(shù)據(jù)類型范圍要求時(shí),當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù);如果原版本數(shù)據(jù)節(jié)點(diǎn)和匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)這兩個(gè)數(shù)據(jù)節(jié)點(diǎn)中,一個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型是字符串,另一個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型是數(shù)字,則當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù)。
所述步驟B32進(jìn)一步包括相匹配的數(shù)據(jù)節(jié)點(diǎn)為復(fù)合元素節(jié)點(diǎn)時(shí),在復(fù)合元素節(jié)點(diǎn)的孩子節(jié)點(diǎn)中搜索匹配數(shù)據(jù)節(jié)點(diǎn),如果能夠搜索到匹配數(shù)據(jù)節(jié)點(diǎn),則繼續(xù)返回執(zhí)行步驟B32;如果無法搜索到匹配數(shù)據(jù)節(jié)點(diǎn),則繼續(xù)執(zhí)行步驟B33。
所述步驟B32進(jìn)一步包括原版本數(shù)據(jù)節(jié)點(diǎn)和匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)這兩個(gè)數(shù)據(jù)節(jié)點(diǎn)中,一個(gè)數(shù)據(jù)節(jié)點(diǎn)是復(fù)合元素節(jié)點(diǎn),另一個(gè)數(shù)據(jù)節(jié)點(diǎn)是簡(jiǎn)單元素節(jié)點(diǎn),則當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)完全采用當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù)。
所述簡(jiǎn)單元素節(jié)點(diǎn)為孩子節(jié)點(diǎn)中不允許元素節(jié)點(diǎn)存在的數(shù)據(jù)節(jié)點(diǎn)。
所述復(fù)合元素節(jié)點(diǎn)為孩子節(jié)點(diǎn)中允許存在元素節(jié)點(diǎn)和/或注釋節(jié)點(diǎn)、沒有非空的文本節(jié)點(diǎn)存在的數(shù)據(jù)節(jié)點(diǎn)。
步驟B33中所述將所述數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中,為原版本數(shù)據(jù)配置文件中的數(shù)據(jù)節(jié)點(diǎn)數(shù)量為n,當(dāng)前版本語法規(guī)定的最小數(shù)據(jù)節(jié)點(diǎn)數(shù)量為m,如果n≥m,則當(dāng)前版本數(shù)據(jù)配置文件中不需要添加僅當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn);如果n<m,則當(dāng)前版本數(shù)據(jù)配置文件中需要添加僅當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn)。
所述將僅當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中,包括首先判斷將要添加的數(shù)據(jù)節(jié)點(diǎn)在當(dāng)前版本數(shù)據(jù)配置文件中是否已經(jīng)存在,如果是,則跳轉(zhuǎn)至當(dāng)前版本缺省數(shù)據(jù)配置文件中待添加的下一數(shù)據(jù)節(jié)點(diǎn),否則,將該數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中。
步驟B32或步驟B33之后,進(jìn)一步包括判斷是否還存在未進(jìn)行處理的原版本配置子樹或當(dāng)前版本缺省配置子樹,如果是,則返回執(zhí)行步驟B31;否則,繼續(xù)執(zhí)行步驟B4。
所述調(diào)用節(jié)點(diǎn)處理函數(shù)對(duì)該數(shù)據(jù)節(jié)點(diǎn)進(jìn)行處理之后,進(jìn)一步包括判斷是否還存在未進(jìn)行處理的原版本配置子樹或當(dāng)前版本缺省配置子樹,如果是,則返回執(zhí)行步驟B30;否則,繼續(xù)執(zhí)行步驟B4。
本發(fā)明提供的數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的裝置用于對(duì)所述缺省數(shù)據(jù)配置文件進(jìn)行解析,生成當(dāng)前版本缺省配置樹,獲取原版本配置樹和當(dāng)前版本缺省配置樹的根節(jié)點(diǎn),對(duì)位于所述根節(jié)點(diǎn)下的兩棵子樹進(jìn)行比較并根據(jù)轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換,生成當(dāng)前版本的數(shù)據(jù)配置文件。
該裝置包括解析單元,用于對(duì)當(dāng)前版本的滿配置的缺省數(shù)據(jù)配置文件進(jìn)行解析,生成當(dāng)前版本缺省配置樹并提供給轉(zhuǎn)換單元;轉(zhuǎn)換單元,用于獲取原版本配置樹和當(dāng)前版本缺省配置樹的根節(jié)點(diǎn),對(duì)兩棵子樹進(jìn)行比較,并根據(jù)存儲(chǔ)的轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換后的配置數(shù)據(jù)提供給生成單元;生成單元,用于將經(jīng)過轉(zhuǎn)換的配置數(shù)據(jù)生成當(dāng)前版本數(shù)據(jù)配置文件。
本發(fā)明中,設(shè)置對(duì)應(yīng)于當(dāng)前版本的滿配置的缺省數(shù)據(jù)配置文件,然后根據(jù)滿配置的缺省數(shù)據(jù)配置文件和轉(zhuǎn)換原則,將原版本的數(shù)據(jù)配置文件轉(zhuǎn)換為當(dāng)前版本的數(shù)據(jù)配置文件,使數(shù)據(jù)配置文件能夠根據(jù)語法文件和缺省的數(shù)據(jù)配置文件自動(dòng)轉(zhuǎn)換,為數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換提供了極大的方便。數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換時(shí),不再依賴于后臺(tái)軟件,使得實(shí)現(xiàn)更為合理,而且在軟件版本的回退和升級(jí)的處理是一致的,解決了現(xiàn)有版本回退時(shí)數(shù)據(jù)配置文件無法自動(dòng)回退的問題。
另外,轉(zhuǎn)換后的當(dāng)前版本數(shù)據(jù)配置文件中各數(shù)據(jù)節(jié)點(diǎn)之間的邏輯關(guān)聯(lián)性和各數(shù)據(jù)節(jié)點(diǎn)的含義均能夠明確表達(dá)出來,使得數(shù)據(jù)配置文件可讀性大大增強(qiáng)。對(duì)數(shù)據(jù)配置文件中所有數(shù)據(jù)節(jié)點(diǎn)的語法校驗(yàn)得到了增強(qiáng),真正達(dá)到了采用具有嚴(yán)格邏輯結(jié)構(gòu)的文件、如XML文件作為數(shù)據(jù)配置文件的目的。
圖1示出了本發(fā)明中數(shù)據(jù)配置文件平滑升級(jí)流程圖;圖2示出了本發(fā)明中根據(jù)轉(zhuǎn)換原則轉(zhuǎn)換數(shù)據(jù)配置文件流程圖;圖3示出了本發(fā)明中數(shù)據(jù)配置文件平滑升級(jí)示意圖;圖4示出了本發(fā)明中XML數(shù)據(jù)平滑升級(jí)單元結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明中,設(shè)置對(duì)應(yīng)于當(dāng)前版本的滿配置的缺省數(shù)據(jù)配置文件,然后根據(jù)滿配置的缺省數(shù)據(jù)配置文件和轉(zhuǎn)換原則,將原版本的數(shù)據(jù)配置文件轉(zhuǎn)換為當(dāng)前版本的數(shù)據(jù)配置文件,當(dāng)前版本的數(shù)據(jù)配置文件中包含有原版本的配置數(shù)據(jù),并且當(dāng)前版本的語法文件能夠?qū)D(zhuǎn)換后的數(shù)據(jù)配置文件進(jìn)行校驗(yàn),轉(zhuǎn)換后的數(shù)據(jù)配置文件具有嚴(yán)格的邏輯結(jié)構(gòu)。滿配置的缺省數(shù)據(jù)配置文件是指數(shù)據(jù)配置文件中包括所有可能需要配置的數(shù)據(jù)節(jié)點(diǎn),且數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù)為缺省值。滿配置的缺省數(shù)據(jù)配置文件可被包含在當(dāng)前版本的軟件包中,也可以配置在數(shù)據(jù)中心中。
下面以基站中XML格式數(shù)據(jù)配置文件的平滑升級(jí)為例,對(duì)本發(fā)明的具體實(shí)現(xiàn)進(jìn)行詳細(xì)說明。
圖1示出了本發(fā)明中數(shù)據(jù)配置文件平滑升級(jí)流程圖,如圖1所示,數(shù)據(jù)配置文件在不同軟件版本間平滑升級(jí)的處理過程包括以下步驟步驟101對(duì)新版本的滿配置的缺省數(shù)據(jù)配置文件進(jìn)行解析,生成新版本缺省配置樹。XML解析單元采用文檔對(duì)象模型(Document Object Model,DOM)將待分析的XML文件、即XML格式的數(shù)據(jù)配置文件解析成內(nèi)存中的一棵文檔對(duì)象樹,所有對(duì)數(shù)據(jù)配置文件的訪問,都會(huì)通過修改訪問對(duì)象樹中的節(jié)點(diǎn)來完成。
步驟102獲取老版本配置樹和新版本缺省配置樹的根節(jié)點(diǎn)。每個(gè)XML文件與一個(gè)樹結(jié)構(gòu)相對(duì)應(yīng),并且每個(gè)樹結(jié)構(gòu)只有唯一的一個(gè)頂層數(shù)據(jù)節(jié)點(diǎn),該頂層數(shù)據(jù)節(jié)點(diǎn)即為根節(jié)點(diǎn),因此,可根據(jù)XML文件的特點(diǎn)確定數(shù)據(jù)配置文件的根節(jié)點(diǎn)。
步驟103對(duì)兩棵子樹進(jìn)行比較并根據(jù)轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換。子樹是一個(gè)相對(duì)概念,樹的每一個(gè)分支毫無疑義地都是一個(gè)子樹,但是子樹的分支也可稱為子樹。這樣,本步驟就是一個(gè)循環(huán)遞推的過程,即本步驟一直執(zhí)行到將老版本配置樹和新版本缺省配置樹中的所有子樹都進(jìn)行了比較和轉(zhuǎn)換。根據(jù)轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換的具體處理過程如圖2所示步驟201判斷老版本配置子樹根節(jié)點(diǎn)是否需要進(jìn)行特殊處理,如果是,則繼續(xù)執(zhí)行步驟202;否則,繼續(xù)執(zhí)行步驟203。位于一個(gè)子樹最頂層的節(jié)點(diǎn)即為該子樹的根節(jié)點(diǎn)。對(duì)于需要進(jìn)行特殊處理的數(shù)據(jù)節(jié)點(diǎn),將該數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)標(biāo)識(shí)(ID)和節(jié)點(diǎn)處理函數(shù)注冊(cè)到特殊處理節(jié)點(diǎn)列表中,這樣,如果節(jié)點(diǎn)標(biāo)識(shí)在特殊處理節(jié)點(diǎn)列表中,則需要對(duì)相應(yīng)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行特殊處理;如果節(jié)點(diǎn)標(biāo)識(shí)不在特殊處理節(jié)點(diǎn)列表中,則不需要對(duì)相應(yīng)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行特殊處理。
步驟202調(diào)用節(jié)點(diǎn)處理函數(shù)對(duì)相應(yīng)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行處理,然后繼續(xù)執(zhí)行步驟206。節(jié)點(diǎn)處理函數(shù)可與節(jié)點(diǎn)標(biāo)識(shí)一一對(duì)應(yīng),即針對(duì)不同的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行不同的特殊處理,節(jié)點(diǎn)處理函數(shù)也可與多個(gè)節(jié)點(diǎn)標(biāo)識(shí)相對(duì)應(yīng),即一個(gè)節(jié)點(diǎn)處理函數(shù)適用于對(duì)多個(gè)節(jié)點(diǎn)的特殊處理。不同的特殊處理過程可通過調(diào)用不同的節(jié)點(diǎn)處理函數(shù)來實(shí)現(xiàn),即不同的節(jié)點(diǎn)處理函數(shù)對(duì)應(yīng)不同的特殊處理過程。
如果老版本數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型不需要變化,但其表示的含義需要改變時(shí),可將老版本數(shù)據(jù)節(jié)點(diǎn)注冊(cè)到特殊處理節(jié)點(diǎn)列表中,該特殊處理節(jié)點(diǎn)列表中還包含有對(duì)相應(yīng)節(jié)點(diǎn)進(jìn)行相應(yīng)特殊處理的節(jié)點(diǎn)處理函數(shù)。
例如,老版本數(shù)據(jù)配置文件中有如下數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)中含有發(fā)射功率RADIOPOWER的配置<MTRU id="0x220000">
<BRDSTART id="0x221000">1</BRDSTART>
<RADIOPOWER id="0x222000">2</RADIOPOWER>
</MTRU>
老版本數(shù)據(jù)配置文件中,與RADIOPOWER的配置值相對(duì)應(yīng)的單位為1dbm,新版本數(shù)據(jù)配置文件中需要對(duì)該數(shù)據(jù)節(jié)點(diǎn)配置得更精確一些,將配置值的單位更改為0.1dbm,然而該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型不需要變化,即在新版本數(shù)據(jù)配置文件中仍然是整數(shù)類型,但是如果直接采用后面描述的轉(zhuǎn)換規(guī)則對(duì)該數(shù)據(jù)節(jié)點(diǎn)進(jìn)行轉(zhuǎn)換,該數(shù)據(jù)節(jié)點(diǎn)的內(nèi)容在轉(zhuǎn)換前后不會(huì)發(fā)生變化,但是卻改變了原來配置的物理含義,發(fā)射功率配置變?yōu)?.2dbm,但如果不改變?cè)渲玫奈锢砗x,則該數(shù)據(jù)節(jié)點(diǎn)的配置還應(yīng)該為2dbm,此時(shí),就需要對(duì)該節(jié)點(diǎn)進(jìn)行特殊處理,具體的特殊處理為調(diào)用節(jié)點(diǎn)處理函數(shù)對(duì)該節(jié)點(diǎn)構(gòu)造新的節(jié)點(diǎn)。采用特殊處理后的數(shù)據(jù)節(jié)點(diǎn)變?yōu)?amp;lt;MTRU id="0x220000">
<BRDSTART id="0x221000">1</BRDSTART>
<RADIOPOWER id="0x222000">20</RADIOPOWER>
</MTRU>
步驟203判斷兩棵子樹的根節(jié)點(diǎn)是否為匹配數(shù)據(jù)節(jié)點(diǎn),即判斷老版本配置子樹的根節(jié)點(diǎn)與新版本缺省配置子樹的根節(jié)點(diǎn)是否為匹配數(shù)據(jù)節(jié)點(diǎn),如果是,則繼續(xù)執(zhí)行步驟204;否則,繼續(xù)執(zhí)行步驟205。在兩個(gè)數(shù)據(jù)配置文件中,如果兩個(gè)數(shù)據(jù)節(jié)點(diǎn)的節(jié)點(diǎn)名稱、節(jié)點(diǎn)標(biāo)識(shí)以及相應(yīng)數(shù)據(jù)節(jié)點(diǎn)在數(shù)據(jù)配置文件中的路徑均相同,則這兩個(gè)數(shù)據(jù)節(jié)點(diǎn)為匹配數(shù)據(jù)節(jié)點(diǎn)。節(jié)點(diǎn)名稱用于指明數(shù)據(jù)節(jié)點(diǎn)的物理含義,節(jié)點(diǎn)的標(biāo)識(shí)用于對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行唯一標(biāo)識(shí),節(jié)點(diǎn)路徑是數(shù)據(jù)配置文件、即XML文件中一序列數(shù)據(jù)節(jié)點(diǎn)的集合,用于描述從根節(jié)點(diǎn)到指定數(shù)據(jù)節(jié)點(diǎn)的層次路徑。同一個(gè)路徑下可能會(huì)存在多個(gè)名稱相同的數(shù)據(jù)節(jié)點(diǎn),這些節(jié)點(diǎn)通過節(jié)點(diǎn)標(biāo)識(shí)來進(jìn)行區(qū)分。
步驟204根據(jù)轉(zhuǎn)換規(guī)則一對(duì)老版本數(shù)據(jù)節(jié)點(diǎn)進(jìn)行轉(zhuǎn)換,然后繼續(xù)執(zhí)行步驟206。
在對(duì)轉(zhuǎn)換規(guī)則一進(jìn)行描述之前,首先對(duì)一些術(shù)語的基本概念進(jìn)行明確。XML文件的形式示例如下< xml version="1.0" >
<NODEB id="0x0"xmlns="NodeBCfgBiz.xml">
<NODEBNAME id="0x0100000">huihongdasha</NODEBNAME>
<BRD id=0x200000>
<NMPT id="0x210000">
<!--This is a comment-->
<BRDSTART id="0x211000">1</BRDSTART>
……<NMPT>
……</BRD>
……</NODEB>
在XML文件中,形如< >的數(shù)據(jù)節(jié)點(diǎn)為文檔節(jié)點(diǎn),位于XML文件的頭部;形如以<>開始、以</>結(jié)束的數(shù)據(jù)節(jié)點(diǎn)為元素節(jié)點(diǎn),其中數(shù)據(jù)節(jié)點(diǎn)NODEB為該XML文件中的根節(jié)點(diǎn);形如<!-- -->的數(shù)據(jù)節(jié)點(diǎn)為注釋節(jié)點(diǎn);僅為一串字符串、無格式要求的數(shù)據(jù)節(jié)點(diǎn)為文本節(jié)點(diǎn),其中“1”為文本節(jié)點(diǎn)。在XML文件中節(jié)點(diǎn)層次結(jié)構(gòu)沒有固定的格式,節(jié)點(diǎn)的名稱是完全根據(jù)相關(guān)參數(shù)來確定的。
葉子元素節(jié)點(diǎn)和非葉子元素節(jié)點(diǎn)均為元素節(jié)點(diǎn)中的一種,葉子元素節(jié)點(diǎn)的孩子節(jié)點(diǎn)中不能有元素節(jié)點(diǎn),非葉子元素節(jié)點(diǎn)的孩子節(jié)點(diǎn)中可以有元素節(jié)點(diǎn)。葉子元素節(jié)點(diǎn)或非葉子元素節(jié)點(diǎn)的下層節(jié)點(diǎn)稱為孩子節(jié)點(diǎn)。如上所述XML文件的形式示例中,數(shù)據(jù)節(jié)點(diǎn)“NMPT”為非葉子元素節(jié)點(diǎn),其孩子節(jié)點(diǎn)中有元素節(jié)點(diǎn)“BRDSTART”;數(shù)據(jù)節(jié)點(diǎn)“BRDSTART”為葉子元素節(jié)點(diǎn),其孩子節(jié)點(diǎn)中沒有元素節(jié)點(diǎn)。
簡(jiǎn)單元素節(jié)點(diǎn)是指XML數(shù)據(jù)配置文件中的葉子元素節(jié)點(diǎn),即其孩子節(jié)點(diǎn)中不允許元素節(jié)點(diǎn)的存在,只可能存在文本節(jié)點(diǎn)和注釋節(jié)點(diǎn),其中文本節(jié)點(diǎn)與具體配置數(shù)據(jù)相對(duì)應(yīng)。復(fù)合元素節(jié)點(diǎn)是指XML數(shù)據(jù)配置文件中的非葉子元素節(jié)點(diǎn),即其孩子節(jié)點(diǎn)中允許存在元素節(jié)點(diǎn)和/或注釋節(jié)點(diǎn),沒有非空的文本節(jié)點(diǎn)存在。
數(shù)據(jù)配置文件中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)都具有節(jié)點(diǎn)標(biāo)識(shí),用于唯一地標(biāo)識(shí)相應(yīng)數(shù)據(jù)節(jié)點(diǎn);同時(shí)數(shù)據(jù)節(jié)點(diǎn)還具有一定的屬性,例如,數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)是否為靜態(tài)配置數(shù)據(jù)。數(shù)據(jù)類型是指數(shù)據(jù)配置文件中能涉及到的數(shù)據(jù)的各種類型,如整數(shù)(int)、字符串(string)等。
轉(zhuǎn)換規(guī)則一1)老版本數(shù)據(jù)配置文件和新版本缺省數(shù)據(jù)配置文件中,相匹配的數(shù)據(jù)節(jié)點(diǎn)為簡(jiǎn)單元素節(jié)點(diǎn)時(shí),新版本數(shù)據(jù)節(jié)點(diǎn)的屬性完全采用匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)的屬性,如果老版本數(shù)據(jù)節(jié)點(diǎn)與匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型相同,則新版本數(shù)據(jù)節(jié)點(diǎn)完全采用匹配的老版本數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù);如果老版本數(shù)據(jù)節(jié)點(diǎn)與匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型不同,且新版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型均為數(shù)字,則當(dāng)老版本數(shù)據(jù)節(jié)點(diǎn)能夠滿足新版本語法文件的數(shù)據(jù)類型范圍要求時(shí),如老版本數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型范圍與新版本語法文件的數(shù)據(jù)類型范圍一致,又如新版本語法文件的數(shù)據(jù)類型范圍能夠包含老版本數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型范圍,新版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的老版本數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù),當(dāng)老版本數(shù)據(jù)節(jié)點(diǎn)無法滿足新版本語法文件的數(shù)據(jù)類型范圍要求時(shí),新版本數(shù)據(jù)節(jié)點(diǎn)使用匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù);如果老版本數(shù)據(jù)節(jié)點(diǎn)和匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)這兩個(gè)數(shù)據(jù)節(jié)點(diǎn)中,一個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型是字符串,另一個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型是數(shù)字,則新版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù)。
2)老版本數(shù)據(jù)配置文件和新版本缺省數(shù)據(jù)配置文件中,相匹配的數(shù)據(jù)節(jié)點(diǎn)為復(fù)合元素節(jié)點(diǎn)時(shí),新版本數(shù)據(jù)節(jié)點(diǎn)的屬性完全采用匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)的屬性,然后在復(fù)合元素節(jié)點(diǎn)的孩子節(jié)點(diǎn)中搜索匹配數(shù)據(jù)節(jié)點(diǎn),如果能夠搜索到匹配數(shù)據(jù)節(jié)點(diǎn),則繼續(xù)根據(jù)轉(zhuǎn)換規(guī)則一進(jìn)行轉(zhuǎn)換;如果無法搜索到匹配數(shù)據(jù)節(jié)點(diǎn),則繼續(xù)根據(jù)后續(xù)的轉(zhuǎn)換規(guī)則二和轉(zhuǎn)換規(guī)則三進(jìn)行轉(zhuǎn)換。
3)老版本數(shù)據(jù)配置文件和新版本缺省數(shù)據(jù)配置文件中,老版本數(shù)據(jù)節(jié)點(diǎn)和匹配的新版本缺省數(shù)據(jù)節(jié)點(diǎn)這兩個(gè)數(shù)據(jù)節(jié)點(diǎn)中,一個(gè)數(shù)據(jù)節(jié)點(diǎn)是復(fù)合元素節(jié)點(diǎn),另一個(gè)數(shù)據(jù)節(jié)點(diǎn)是簡(jiǎn)單元素節(jié)點(diǎn),則新版本數(shù)據(jù)節(jié)點(diǎn)完全采用新版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù)。
步驟205根據(jù)轉(zhuǎn)換規(guī)則二和/或三對(duì)老版本數(shù)據(jù)節(jié)點(diǎn)進(jìn)行轉(zhuǎn)換,然后繼續(xù)執(zhí)行步驟206。
轉(zhuǎn)換規(guī)則二對(duì)于老版本數(shù)據(jù)配置文件中存在而新版本缺省數(shù)據(jù)配置文件中不存在的數(shù)據(jù)節(jié)點(diǎn),則新版本數(shù)據(jù)配置文件中不包含僅老版本數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn)。
轉(zhuǎn)換規(guī)則三對(duì)于老版本數(shù)據(jù)配置文件中不存在而新版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn),需要根據(jù)老版本數(shù)據(jù)配置文件中的數(shù)據(jù)節(jié)點(diǎn)數(shù)量n和新版本語法規(guī)定的最小數(shù)據(jù)節(jié)點(diǎn)數(shù)量m,來確定新版本數(shù)據(jù)配置文件中是否需要添加僅新版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn),如果n≥m,則新版本數(shù)據(jù)配置文件中無需添加僅新版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn);如果n<m,則新版本數(shù)據(jù)配置文件中需要添加僅新版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn)。在將僅新版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn)添加至新版本數(shù)據(jù)配置文件中時(shí),首先判斷將要添加的數(shù)據(jù)節(jié)點(diǎn)在新版本數(shù)據(jù)配置文件中是否已經(jīng)存在,如果是,則跳轉(zhuǎn)至新版本缺省數(shù)據(jù)配置文件中待添加的下一數(shù)據(jù)節(jié)點(diǎn),否則,將相應(yīng)數(shù)據(jù)節(jié)點(diǎn)添加至新版本數(shù)據(jù)配置文件中,以保證添加的數(shù)據(jù)節(jié)點(diǎn)與新版本數(shù)據(jù)配置文件中已經(jīng)存在的數(shù)據(jù)節(jié)點(diǎn)不重復(fù)。
步驟206判斷是否還存在未進(jìn)行處理的老版本配置子樹或新版本缺省配置子樹,如果是,則返回執(zhí)行步驟201;否則,結(jié)束轉(zhuǎn)換流程,繼續(xù)執(zhí)行步驟104。
步驟104將經(jīng)過轉(zhuǎn)換的配置數(shù)據(jù)生成新版本數(shù)據(jù)配置文件,實(shí)現(xiàn)數(shù)據(jù)配置文件的升級(jí)。
圖3示出了本發(fā)明中數(shù)據(jù)配置文件平滑升級(jí)示意圖,如圖3所示,基站的軟件版本升級(jí)時(shí),將新版本的語法文件和滿配置的缺省數(shù)據(jù)配置文件解包到指定目錄下,基站復(fù)位后,在XML數(shù)據(jù)中心啟動(dòng)的過程中,XML數(shù)據(jù)平滑升級(jí)單元根據(jù)老版本的配置樹、新版本的缺省配置樹生成新版本數(shù)據(jù)配置文件,并使用新版本語法文件對(duì)新版本數(shù)據(jù)配置文件進(jìn)行嚴(yán)格的預(yù)防校驗(yàn)。圖1和圖2所述的操作均由XML數(shù)據(jù)平滑升級(jí)單元執(zhí)行,該XML數(shù)據(jù)平滑升級(jí)單元位于基站的XML數(shù)據(jù)中心。
圖4示出了本發(fā)明中XML數(shù)據(jù)平滑升級(jí)單元結(jié)構(gòu)示意圖,如圖4所示,XML數(shù)據(jù)平滑升級(jí)單元包括XML解析單元、轉(zhuǎn)換單元和生成單元,其中,XML解析單元用于對(duì)新版本的滿配置的缺省數(shù)據(jù)配置文件進(jìn)行解析,生成新版本缺省配置樹并提供給轉(zhuǎn)換單元;轉(zhuǎn)換單元用于獲取老版本配置樹和新版本缺省配置樹的根節(jié)點(diǎn),對(duì)兩棵子樹進(jìn)行比較,并根據(jù)存儲(chǔ)的轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換后的配置數(shù)據(jù)提供給生成單元;生成單元用于將經(jīng)過轉(zhuǎn)換的配置數(shù)據(jù)生成新版本數(shù)據(jù)配置文件。
在進(jìn)行軟件版本回退時(shí),處理過程與以上描述相同,進(jìn)行軟件版本的回退時(shí)與以上所述升級(jí)的處理是一致的,解決了現(xiàn)有技術(shù)中版本回退時(shí)數(shù)據(jù)配置文件無法自動(dòng)回退的問題,不再贅述。因此,本發(fā)明提出的方案可使數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行平滑轉(zhuǎn)換,即針對(duì)軟件版本升級(jí)和軟件版本回退均適用,只需使?jié)M配置的缺省數(shù)據(jù)配置文件與轉(zhuǎn)換后的軟件版本相對(duì)應(yīng)即可。
本發(fā)明提出的方案適用于與XML具有相同特點(diǎn)的其他文件格式的數(shù)據(jù)配置文件在不同版本間的轉(zhuǎn)換。
本發(fā)明提出的方案適用于任何需要將數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的情況,如與基站同樣需要配置數(shù)據(jù)的其他網(wǎng)絡(luò)單元。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的方法,其特征在于,該方法包含以下步驟A、設(shè)置對(duì)應(yīng)于當(dāng)前軟件版本的滿配置的缺省數(shù)據(jù)配置文件;B、根據(jù)所述缺省數(shù)據(jù)配置文件和轉(zhuǎn)換原則,將原版本的數(shù)據(jù)配置文件轉(zhuǎn)換為當(dāng)前版本的數(shù)據(jù)配置文件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中所述滿配置的缺省數(shù)據(jù)配置文件,為包括所有需要配置的數(shù)據(jù)節(jié)點(diǎn)、且數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù)為缺省值的數(shù)據(jù)配置文件。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B包括以下步驟B1、對(duì)所述缺省數(shù)據(jù)配置文件進(jìn)行解析,生成當(dāng)前版本缺省配置樹;B2、獲取原版本配置樹和當(dāng)前版本缺省配置樹的根節(jié)點(diǎn);B3、對(duì)位于所述根節(jié)點(diǎn)下的兩棵子樹進(jìn)行比較并根據(jù)轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換;B4、生成當(dāng)前版本的數(shù)據(jù)配置文件。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟B2與步驟B3之間,進(jìn)一步包括B30、判斷原版本配置子樹根節(jié)點(diǎn)是否需要進(jìn)行特殊處理,如果是,調(diào)用節(jié)點(diǎn)處理函數(shù)對(duì)該數(shù)據(jù)節(jié)點(diǎn)進(jìn)行處理,否則,繼續(xù)執(zhí)行步驟B3。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟B之前,進(jìn)一步包括將需要進(jìn)行特殊處理的數(shù)據(jù)節(jié)點(diǎn)的標(biāo)識(shí)和節(jié)點(diǎn)處理函數(shù)注冊(cè)到特殊處理節(jié)點(diǎn)列表中。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟B3包括以下步驟B31、判斷原版本配置子樹的根數(shù)據(jù)節(jié)點(diǎn)與當(dāng)前版本缺省配置子樹的根數(shù)據(jù)節(jié)點(diǎn)是否為匹配數(shù)據(jù)節(jié)點(diǎn),如果是,則繼續(xù)執(zhí)行步驟B32,否則,繼續(xù)執(zhí)行步驟B33;B32、當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)的屬性采用匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的屬性,結(jié)束當(dāng)前轉(zhuǎn)換流程;B33、對(duì)于原版本數(shù)據(jù)配置文件中存在而當(dāng)前版本缺省數(shù)據(jù)配置文件中不存在的數(shù)據(jù)節(jié)點(diǎn),當(dāng)前版本數(shù)據(jù)配置文件中不包含僅原版本數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn),和/或,對(duì)于原版本數(shù)據(jù)配置文件中不存在而當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn),將所述數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B32所述結(jié)束當(dāng)前轉(zhuǎn)換流程之前,進(jìn)一步包括相匹配的數(shù)據(jù)節(jié)點(diǎn)為簡(jiǎn)單元素節(jié)點(diǎn)時(shí),如果原版本數(shù)據(jù)節(jié)點(diǎn)與匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型相同,則當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的原版本數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù);如果原版本數(shù)據(jù)節(jié)點(diǎn)與匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型不同,且當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型均為數(shù)字,當(dāng)原版本數(shù)據(jù)節(jié)點(diǎn)能夠滿足當(dāng)前版本語法文件的數(shù)據(jù)類型范圍要求時(shí),當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的原版本數(shù)據(jù)節(jié)點(diǎn)的配置數(shù)據(jù),當(dāng)原版本數(shù)據(jù)節(jié)點(diǎn)無法滿足當(dāng)前版本語法文件的數(shù)據(jù)類型范圍要求時(shí),當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù);如果原版本數(shù)據(jù)節(jié)點(diǎn)和匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)這兩個(gè)數(shù)據(jù)節(jié)點(diǎn)中,一個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型是字符串,另一個(gè)數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)類型是數(shù)字,則當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)采用匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù)。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟B32進(jìn)一步包括相匹配的數(shù)據(jù)節(jié)點(diǎn)為復(fù)合元素節(jié)點(diǎn)時(shí),在復(fù)合元素節(jié)點(diǎn)的孩子節(jié)點(diǎn)中搜索匹配數(shù)據(jù)節(jié)點(diǎn),如果能夠搜索到匹配數(shù)據(jù)節(jié)點(diǎn),則繼續(xù)返回執(zhí)行步驟B32;如果無法搜索到匹配數(shù)據(jù)節(jié)點(diǎn),則繼續(xù)執(zhí)行步驟B33。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟B32進(jìn)一步包括原版本數(shù)據(jù)節(jié)點(diǎn)和匹配的當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)這兩個(gè)數(shù)據(jù)節(jié)點(diǎn)中,一個(gè)數(shù)據(jù)節(jié)點(diǎn)是復(fù)合元素節(jié)點(diǎn),另一個(gè)數(shù)據(jù)節(jié)點(diǎn)是簡(jiǎn)單元素節(jié)點(diǎn),則當(dāng)前版本數(shù)據(jù)節(jié)點(diǎn)完全采用當(dāng)前版本缺省數(shù)據(jù)節(jié)點(diǎn)的缺省配置數(shù)據(jù)。
10.根據(jù)權(quán)利要求7或9所述的方法,其特征在于,所述簡(jiǎn)單元素節(jié)點(diǎn)為孩子節(jié)點(diǎn)中不允許元素節(jié)點(diǎn)存在的數(shù)據(jù)節(jié)點(diǎn)。
11.根據(jù)權(quán)利要求8或9所述的方法,其特征在于,所述復(fù)合元素節(jié)點(diǎn)為孩子節(jié)點(diǎn)中允許存在元素節(jié)點(diǎn)和/或注釋節(jié)點(diǎn)、沒有非空的文本節(jié)點(diǎn)存在的數(shù)據(jù)節(jié)點(diǎn)。
12.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B33中所述將所述數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中,為原版本數(shù)據(jù)配置文件中的數(shù)據(jù)節(jié)點(diǎn)數(shù)量為n,當(dāng)前版本語法規(guī)定的最小數(shù)據(jù)節(jié)點(diǎn)數(shù)量為m,如果n≥m,則當(dāng)前版本數(shù)據(jù)配置文件中不需要添加僅當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn);如果n<m,則當(dāng)前版本數(shù)據(jù)配置文件中需要添加僅當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn)。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述將僅當(dāng)前版本缺省數(shù)據(jù)配置文件中存在的數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中,包括首先判斷將要添加的數(shù)據(jù)節(jié)點(diǎn)在當(dāng)前版本數(shù)據(jù)配置文件中是否已經(jīng)存在,如果是,則跳轉(zhuǎn)至當(dāng)前版本缺省數(shù)據(jù)配置文件中待添加的下一數(shù)據(jù)節(jié)點(diǎn),否則,將該數(shù)據(jù)節(jié)點(diǎn)添加至當(dāng)前版本數(shù)據(jù)配置文件中。
14.根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟B32或步驟B33之后,進(jìn)一步包括判斷是否還存在未進(jìn)行處理的原版本配置子樹或當(dāng)前版本缺省配置子樹,如果是,則返回執(zhí)行步驟B31;否則,繼續(xù)執(zhí)行步驟B4。
15.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述調(diào)用節(jié)點(diǎn)處理函數(shù)對(duì)該數(shù)據(jù)節(jié)點(diǎn)進(jìn)行處理之后,進(jìn)一步包括判斷是否還存在未進(jìn)行處理的原版本配置子樹或當(dāng)前版本缺省配置子樹,如果是,則返回執(zhí)行步驟B30;否則,繼續(xù)執(zhí)行步驟B4。
16.一種數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的裝置,其特征在于,該裝置用于對(duì)所述缺省數(shù)據(jù)配置文件進(jìn)行解析,生成當(dāng)前版本缺省配置樹,獲取原版本配置樹和當(dāng)前版本缺省配置樹的根節(jié)點(diǎn),對(duì)位于所述根節(jié)點(diǎn)下的兩棵子樹進(jìn)行比較并根據(jù)轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換,生成當(dāng)前版本的數(shù)據(jù)配置文件。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,該裝置包括解析單元,用于對(duì)當(dāng)前版本的滿配置的缺省數(shù)據(jù)配置文件進(jìn)行解析,生成當(dāng)前版本缺省配置樹并提供給轉(zhuǎn)換單元;轉(zhuǎn)換單元,用于獲取原版本配置樹和當(dāng)前版本缺省配置樹的根節(jié)點(diǎn),對(duì)兩棵子樹進(jìn)行比較,并根據(jù)存儲(chǔ)的轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換后的配置數(shù)據(jù)提供給生成單元;生成單元,用于將經(jīng)過轉(zhuǎn)換的配置數(shù)據(jù)生成當(dāng)前版本數(shù)據(jù)配置文件。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換的方法及裝置,設(shè)置對(duì)應(yīng)于當(dāng)前版本的滿配置的缺省數(shù)據(jù)配置文件,然后根據(jù)滿配置的缺省數(shù)據(jù)配置文件和轉(zhuǎn)換原則,將原版本的數(shù)據(jù)配置文件轉(zhuǎn)換為當(dāng)前版本的數(shù)據(jù)配置文件,使數(shù)據(jù)配置文件能夠根據(jù)語法文件和缺省的數(shù)據(jù)配置文件自動(dòng)轉(zhuǎn)換,為數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換提供了極大的方便。數(shù)據(jù)配置文件在不同軟件版本間進(jìn)行轉(zhuǎn)換時(shí),不再依賴于后臺(tái)軟件,使得實(shí)現(xiàn)更為合理,而且在軟件版本的回退和升級(jí)的處理是一致的,解決了現(xiàn)有版本回退時(shí)數(shù)據(jù)配置文件無法自動(dòng)回退的問題。
文檔編號(hào)H04W88/08GK1909693SQ20061010971
公開日2007年2月7日 申請(qǐng)日期2006年8月7日 優(yōu)先權(quán)日2006年8月7日
發(fā)明者曹金勇 申請(qǐng)人:華為技術(shù)有限公司