本發(fā)明涉及計算機領(lǐng)域,具體地,涉及一種用于合并樹形結(jié)構(gòu)的方法和一種用于合并樹形結(jié)構(gòu)的裝置。
背景技術(shù):
在計算機系統(tǒng)中,常采用以樹形結(jié)構(gòu)存儲信息的文件對系統(tǒng)進行管理以實現(xiàn)特定的功能。例如,在B/S(Browser/Server,瀏覽器/服務(wù)器)結(jié)構(gòu)的企業(yè)信息化系統(tǒng)服務(wù)器上可使用以樹形結(jié)構(gòu)存儲信息的配置文件進行系統(tǒng)參數(shù)和屬性信息的初始化配置等。
例如,在較大型的、成體系的企業(yè)應(yīng)用中,各個下屬企業(yè)的計算機子系統(tǒng)的架構(gòu)通常是比較類似的,但其各自要通過不同的配置文件加以維護,而且隨著系統(tǒng)應(yīng)用部署數(shù)量的增加,還會形成多個版本的配置文件共存共用的現(xiàn)象,導(dǎo)致系統(tǒng)的維護方需要同時維護很多版本。而由于這些系統(tǒng)功能大多類似,所以其所使用的配置文件的內(nèi)容中的大部分也是相同的,但不同系統(tǒng)之間或者系統(tǒng)的不同版本之間又存在一些特殊的配置項需要單獨定義或者為不同版本的相同配置項配置不同值。因此將不同版本的配置文件進行合并管理能大大減少系統(tǒng)維護成本,并且避免繁瑣地分別修改各個版本可能帶來的錯誤。
又例如,用于實現(xiàn)某個功能的、可通過樹形結(jié)構(gòu)管理的信息可能包括易變部分和穩(wěn)定部分,如果能方便地實現(xiàn)文件合并,那么就可以考慮將該信息中的易變部分和穩(wěn)定部分各自以樹形結(jié)構(gòu)存儲在不同的文件中加以維護,而在使用時將不同文件中存儲的信息合并在一起,這也可大大提高系統(tǒng)管理效率。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種方法,該方法能對多個樹形結(jié)構(gòu)進行合并操作,以方便對多個以樹形結(jié)構(gòu)存儲信息的文件進行統(tǒng)一管理和維護。本發(fā)明還提供了一種用于合并樹形結(jié)構(gòu)的裝置。
為了實現(xiàn)上述目的,本發(fā)明提供一種用于合并樹形結(jié)構(gòu)的方法,該樹形結(jié)構(gòu)包括第一樹形結(jié)構(gòu)和第二樹形結(jié)構(gòu),該方法包括:從第二樹形結(jié)構(gòu)中選擇待合并節(jié)點,以及對所述待合并節(jié)點進行合并處理。所述合并處理包括:判斷所述第一樹形結(jié)構(gòu)中是否存在與所述待合并節(jié)點相對應(yīng)的節(jié)點,并根據(jù)判斷結(jié)果執(zhí)行以下一者:在所述第一樹形結(jié)構(gòu)中存在與所述待合并節(jié)點相對應(yīng)的節(jié)點的情況下,將所述待合并節(jié)點合并至所述第一樹形結(jié)構(gòu)中與所述待合并節(jié)點相對應(yīng)的節(jié)點;及在所述第一樹形結(jié)構(gòu)中不存在與所述待合并節(jié)點相對應(yīng)的節(jié)點的情況下,將所述待合并節(jié)點添加至所述第一樹形結(jié)構(gòu)中與該待合并節(jié)點的父節(jié)點相對應(yīng)的節(jié)點下。其中,基于節(jié)點的標(biāo)識信息來確定不同樹形結(jié)構(gòu)中的節(jié)點是否互相對應(yīng)。
上述第一和第二樹形結(jié)構(gòu)可以存儲在不同的文件中。
優(yōu)選地,可根據(jù)需要為待合并節(jié)點配置不同的合并策略,以進一步提高進行樹形結(jié)構(gòu)合并的效率。
本發(fā)明還提供了一種用于合并樹形結(jié)構(gòu)的裝置。
通過上述技術(shù)方案,可靈活地合并多個樹形結(jié)構(gòu)文件,為樹形結(jié)構(gòu)信息的分塊存儲和維護提供了便利,并大大減少了系統(tǒng)管理和維護工作中出錯的概率。本發(fā)明的內(nèi)容可應(yīng)用于劍魂軟件開發(fā)平臺(原稱Witrix平臺)等軟件開發(fā)平臺,并作為相應(yīng)軟件開發(fā)平臺的核心技術(shù)。
本發(fā)明的其它特征和優(yōu)點將在隨后的具體實施方式部分予以詳細(xì)說明。
附圖說明
附圖是用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與下面的具體實施方式一起用于解釋本發(fā)明,但并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1是示出根據(jù)本發(fā)明優(yōu)選實施方式對樹形結(jié)構(gòu)進行合并的示例圖。
圖2是示出根據(jù)本發(fā)明優(yōu)選實施方式確定是否對不同樹形結(jié)構(gòu)文件進行合并的示例流程圖。
圖3是示出根據(jù)本發(fā)明優(yōu)選實施方式進行樹形結(jié)構(gòu)合并的示例流程圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的具體實施方式進行詳細(xì)說明。應(yīng)當(dāng)理解的是,此處所描述的具體實施方式僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
本發(fā)明中,節(jié)點i的路徑指從樹形結(jié)構(gòu)的根節(jié)點至節(jié)點i順序經(jīng)過的所有節(jié)點,例如根節(jié)點為L101,L101具有子節(jié)點L201,L201具有子節(jié)點L301,則L301的路徑可表示為L101/L201;節(jié)點i的下級節(jié)點指節(jié)點i所在的樹形結(jié)構(gòu)中以節(jié)點i為根節(jié)點的節(jié)點,可包括節(jié)點i的子節(jié)點、節(jié)點i的子節(jié)點的子節(jié)點等等;節(jié)點i的上級節(jié)點指從樹形結(jié)構(gòu)的根節(jié)點至節(jié)點i所經(jīng)過的所有節(jié)點,可包括節(jié)點i的父節(jié)點、節(jié)點i的父節(jié)點的父節(jié)點等等;葉子節(jié)點指不具有子節(jié)點的節(jié)點。
進行樹形結(jié)構(gòu)合并的基本思想是對不同樹形結(jié)構(gòu)中相對應(yīng)的節(jié)點進行合并,并且保留僅存在于其中一個樹形結(jié)構(gòu)中的節(jié)點。
圖1是示出根據(jù)本發(fā)明優(yōu)選實施方式對兩個樹形結(jié)構(gòu)進行合并的示例圖。圖1(a)和圖1(b)分別示出了合并前的兩個樹形結(jié)構(gòu),其中圖1(b)中的樹形結(jié)構(gòu)可被視為作為合并基礎(chǔ)的初始樹形結(jié)構(gòu),可按照一定策略依次 將圖1(a)中的節(jié)點合并或添加到圖1(b)中的樹形結(jié)構(gòu)中,以得到合并后的樹形結(jié)構(gòu)。圖1(c)為根據(jù)本發(fā)明將圖1(a)所示的樹形結(jié)構(gòu)合并至圖1(b)所示的樹形結(jié)構(gòu)后得到的合并后的樹形結(jié)構(gòu)的示意圖。
如圖1(a)所示,L101為圖1(a)中的樹形結(jié)構(gòu)的根節(jié)點,L101具有A1和B1兩個屬性,其值分別為a1和b1。L101有3個子節(jié)點L201、L202和L204,L201的屬性信息為(A2=a2;B2=b2),L202的屬性信息為(D2=d2),L204的屬性信息為(E2=e2)。L201有2個子節(jié)點L301和L302,L202有子節(jié)點L303,L204沒有子節(jié)點。
如圖1(b)所示,L101為圖1(b)中的樹形結(jié)構(gòu)的根節(jié)點,L101具有A1和B1兩個屬性,其值分別為a1和b1。L101有3個子節(jié)點L201、L203和L204,L201的屬性信息為(B2=b2’;C2=c2),L203的屬性信息為(D2=d2),L204的屬性信息為(F2=f2)。L201有2個子節(jié)點L301和L202,L204有子節(jié)點L304。
可基于節(jié)點的標(biāo)識信息來確定來自不同樹形結(jié)構(gòu)的節(jié)點是否互相對應(yīng)。在同一樹形結(jié)構(gòu)中,節(jié)點的標(biāo)識信息能夠唯一地識別節(jié)點。不同樹形結(jié)構(gòu)中的節(jié)點的標(biāo)識信息間可具有一定的映射關(guān)系,可認(rèn)為符合該映射關(guān)系的節(jié)點互相對應(yīng)。例如,本實施方式中,節(jié)點的標(biāo)識信息可包括節(jié)點的路徑信息和名稱信息,同一樹形結(jié)構(gòu)中可基于節(jié)點的標(biāo)識信息唯一地標(biāo)識該節(jié)點,可基于節(jié)點標(biāo)識信息相同來確定來自不同樹形結(jié)構(gòu)的節(jié)點互相對應(yīng)。此外,有些情況下可能存在集合節(jié)點(即同一樹形結(jié)構(gòu)中以同一節(jié)點為父節(jié)點并且名稱相同的多個節(jié)點構(gòu)成的集合中的節(jié)點),則每個集合節(jié)點的標(biāo)識信息還包括其在集合內(nèi)的編號信息,以與該集合中的其他節(jié)點進行區(qū)分。
對以樹形結(jié)構(gòu)存儲信息的文件進行解析后,優(yōu)選地,可首先判斷其根節(jié)點的標(biāo)識信息(例如,通常是根節(jié)點的名稱)是否相同,如果根節(jié)點的標(biāo)識信息不同,則可不對這兩個文件中存儲的樹形結(jié)構(gòu)進行合并操作??烧J(rèn)為圖 1(a)和圖1(b)所示的樹形結(jié)構(gòu)的根節(jié)點的標(biāo)識信息相同(例如,名稱都為L101),因此可對圖1(a)和圖1(b)所示的樹形結(jié)構(gòu)進行合并。
可按照從根節(jié)點到葉子節(jié)點的順序依次選擇待合并節(jié)點,對于以同一節(jié)點為父節(jié)點的多個節(jié)點(也成為兄弟節(jié)點),可按照排序從前到后(對應(yīng)在圖1中為從左到右)的順序依次選擇待合并節(jié)點??墒紫葘D1(a)中的L101選為待合并節(jié)點進行合并。針對圖1(a)中的節(jié)點L101,可在圖1(b)中找到相對應(yīng)的節(jié)點L101,則可將圖1(a)中的節(jié)點L101合并至圖1(b)中的節(jié)點L101??筛鶕?jù)需要配置(顯式或隱式)不同的一級合并策略。根據(jù)本發(fā)明,一級合并策略可包括“合并”和/或“替換”。如果圖1(a)中節(jié)點L101的一級合并策略為“合并”,則合并后的L101包括圖1(a)中的L101和圖1(b)中的L101所具有的全部屬性。如果圖1(a)中節(jié)點L101的一級合并策略為“替換”,則用圖1(a)中的L101所具有的屬性信息作為合并后的L101的屬性信息。圖1示出的示例中,圖1(a)中的L101和圖1(b)中的L101的屬性信息相同,所以其在一級合并策略為“合并”或“替換”的情況下得到的合并后的L101的屬性信息是相同的。
優(yōu)選地,可針對圖1(a)中的每個節(jié)點的合并設(shè)置不同的一級合并策略,例如,針對L101和L201可設(shè)置不同的一級合并策略。一級合并策略可顯式或隱式的指定。例如,一級合并策略可作為節(jié)點的屬性存儲在樹形結(jié)構(gòu)中,也可由額外的文件來配置此次合并中針對各個節(jié)點的一級合并策略,或者通過默認(rèn)配置的方式配置等等。
可依次處理根節(jié)點的各個分支。根據(jù)本發(fā)明的優(yōu)選實施方式,可根據(jù)配置(顯式或隱式)按照多種方式處理待合并節(jié)點的下級節(jié)點。例如,可依次選擇L101的各個子節(jié)點作為新的待合并節(jié)點并按照上述處理L101的方式逐個進行合并處理(本申請中也稱為二級合并策略為“合并”);也可將圖1(a)中L101的下級節(jié)點按照原有路徑和原有屬性信息(即圖1(a)所示的樹形 結(jié)構(gòu)中的路徑和屬性信息)直接添加在圖1(b)中的樹形結(jié)構(gòu)中,例如圖1(a)中L101的下級節(jié)點可被添加在圖1(b)中L101的下級節(jié)點之前(本申請中也稱為二級合并策略為“前插”)或之后(本申請中也稱為二級合并策略為“追加”);還可用圖1(a)中L101的下級節(jié)點覆蓋圖1(b)中L101的下級節(jié)點(本申請中也稱為二級合并策略為“覆蓋”),“覆蓋”可視為將圖1(a)中L101的下級節(jié)點按照原有路徑和屬性信息添加至圖1(b)中的樹形結(jié)構(gòu)中,并刪除圖1(b)中L101原有的下級節(jié)點。根據(jù)本發(fā)明的優(yōu)選實施方式,如果針對某個節(jié)點的一級合并策略為“合并”,則針對該節(jié)點的二級合并策略可被配置(顯式或隱式)為“合并”、“前插”、“追加”和“覆蓋”中的任意一者;如果針對某個節(jié)點的一級合并策略為“替換”,則針對該節(jié)點的二級合并策略通常被配置(顯式或隱式)為“覆蓋”。
設(shè)圖1(a)中L101的一級合并策略為“合并”、二級合并策略為“合并”,可選擇圖1(a)中的L201作為新的待處理節(jié)點。可在圖1(b)示出的樹形結(jié)構(gòu)中找到與圖1(a)中的L201相對應(yīng)的節(jié)點。設(shè)圖1(a)中L201的一級合并策略為“合并”、二級合并策略為“前插”,圖1(a)中L201的屬性信息為(A2=a2;B2=b2),圖1(b)中L201的屬性信息為(B2=b2’;C2=c2),合并得到的L201的屬性信息為(A2=a2;B2=b2;C2=c2)(如圖1(c)所示),其具有圖1(a)和圖1(b)中的L201所具有的全部屬性,對于圖1(a)中L201和圖1(b)中L201都具有的屬性B2,其值和圖1(a)中L201的屬性B2的值相同。合并后的L102的有4個子節(jié)點L301、L302、L301以及L202,其中,如果L301被指示為集合節(jié)點,則其標(biāo)識信息除包括路徑信息和名稱信息外還可包括L301在集合內(nèi)的編號信息;如果L301被指示為非集合節(jié)點,則這是一種非正常情況,可上報BUG。
本領(lǐng)域技術(shù)人員可以理解的是,假設(shè)圖1(a)中的L201沒有子節(jié)點,則無論二級合并策略是“前插”或者“追加”,合并后的樹形結(jié)構(gòu)中L201的 子節(jié)點的情況是完全相同的;如果圖1(b)中的L201沒有子節(jié)點,則無論二級合并策略是“前插”、“追加”或“覆蓋”,合并后的樹形結(jié)構(gòu)中L201的子節(jié)點的情況是完全相同的。
針對圖1(a)中的節(jié)點L202,因為圖1(b)中沒有與L202相對應(yīng)的節(jié)點,因此圖1(a)中的L202可被添加至L101下,合并后的樹形結(jié)構(gòu)中的L202屬性信息可保持不變。優(yōu)選地,如圖所示,可將圖1(a)中L202的所有下級節(jié)點(如L303)按照原有路徑和原有屬性信息添加在第一樹形結(jié)構(gòu)中。
可選擇L204作為新的待合并節(jié)點??稍趫D1(b)示出的樹形結(jié)構(gòu)中找到與圖1(a)中的L204相對應(yīng)的節(jié)點。設(shè)L204的一級合并策略為“替換”、二級合并策略為“覆蓋”。圖1(a)中L204的屬性信息為(E2=e2),圖1(b)中L204的屬性信息為(F2=f2),圖1(b)中的L204還有子節(jié)點L304。基于一級合并策略為“替換”,合并后的L204的屬性信息為(E2=e2)?;诙壓喜⒉呗詾椤案采w”,合并后的L204沒有子節(jié)點。
如圖所示,圖1(b)中的L203在圖1(a)中沒有相對應(yīng)的節(jié)點,因此L203可不受針對圖1(a)中的節(jié)點的合并處理的影響,其以原有路徑和原有屬性信息保留在合并后的樹形結(jié)構(gòu)中。
優(yōu)選地,在一些情況下,可將圖1(a)中的某節(jié)點配置為需刪除節(jié)點,合并后的樹形結(jié)構(gòu)中不包括與該節(jié)點相對應(yīng)的節(jié)點。因此,可不對該節(jié)點進行合并處理,可直接將與該節(jié)點相對應(yīng)的節(jié)點從圖1(b)中刪除(如果存在)。
圖2是示出根據(jù)本發(fā)明優(yōu)選實施方式確定是否對不同樹形結(jié)構(gòu)文件進行合并的示例流程圖。如圖2所示,在S201,可分別解析第一樹形文件和第二樹形文件得到第一樹形結(jié)構(gòu)和第二樹形結(jié)構(gòu)。在S202,可判斷第一樹形結(jié)構(gòu)和第二樹形結(jié)構(gòu)的根節(jié)點的標(biāo)識信息(例如,名稱)是否相同。如果相同,則確定合并這兩個樹形結(jié)構(gòu)(S203),如果不相同,則確定不對這兩個 樹形結(jié)構(gòu)進行合并操作(S204)。
圖3是示出根據(jù)本發(fā)明優(yōu)選實施方式進行樹形結(jié)構(gòu)合并的示例流程圖。為便于描述,在該實施方式中,設(shè)第二樹形結(jié)構(gòu)中每個節(jié)點的二級合并策略都被配置為“合并”,以及認(rèn)為對于具有相同父節(jié)點的各個子節(jié)點,按照排序從前到后的順序進行處理。
在S301,選擇第二樹形結(jié)構(gòu)的根節(jié)點作為待合并節(jié)點,可稱所選擇的待合并節(jié)點為節(jié)點i。在S302,判斷在第一樹形結(jié)構(gòu)中是否存在與第二樹形結(jié)構(gòu)中的節(jié)點i相對應(yīng)的節(jié)點i’。如果在S302判斷第一樹形結(jié)構(gòu)中不存在與節(jié)點i對應(yīng)的節(jié)點i’,則在S308將節(jié)點i以及第二樹形結(jié)構(gòu)中節(jié)點i的所有下級節(jié)點按照原有路徑和屬性信息(即第二樹形結(jié)構(gòu)中的路徑和屬性信息)添加至第一樹形結(jié)構(gòu)中,為便于區(qū)分,節(jié)點i添加至第一樹形結(jié)構(gòu)后稱為節(jié)點i”。在S308中完成節(jié)點添加后,在S309判斷節(jié)點i是否是根節(jié)點。
如果在S302判斷第一樹形結(jié)構(gòu)中存在與節(jié)點i對應(yīng)的節(jié)點i’,則在S303進一步判斷節(jié)點i的一級合并策略為“替換”還是“合并”。如果S303的判斷結(jié)果是“替換”,則在S307將節(jié)點i’及節(jié)點i’的下級節(jié)點從第一樹形文件中刪除,然后在S308將節(jié)點i以及第二樹形結(jié)構(gòu)中節(jié)點i的所有下級節(jié)點按照原有路徑和屬性信息(即第二樹形結(jié)構(gòu)中的路徑和屬性信息)添加至第一樹形結(jié)構(gòu)中,為便于區(qū)分,節(jié)點i添加至第一樹形結(jié)構(gòu)后稱為節(jié)點i”。在S308中完成節(jié)點添加后,在S309判斷節(jié)點i是否是根節(jié)點。
如果S303的判斷結(jié)果是“合并”(即非“替換”),則在S304將節(jié)點i合并至節(jié)點i’,合并后的節(jié)點i”具有節(jié)點i和節(jié)點i’所具有的所有屬性,對于節(jié)點i和節(jié)點i’都具有的屬性,優(yōu)選地節(jié)點i”的該屬性的值和節(jié)點i的該屬性的屬性值相同。然后在S305判斷節(jié)點i是否有子節(jié)點。如果在S305判斷節(jié)點i有子節(jié)點,則在S306從節(jié)點i的子節(jié)點中選擇第一個(即排序最前)子節(jié)點作為新的待合并節(jié)點,然后回到S302。如果在S305判斷節(jié)點i沒有 子節(jié)點,則在S309繼續(xù)判斷節(jié)點i是否是根節(jié)點。
如果在S309判斷節(jié)點i為根節(jié)點,則針對第一樹形結(jié)構(gòu)和第二樹形結(jié)構(gòu)的合并結(jié)束(S317)。如果在S309判斷節(jié)點i不是根節(jié)點,則進一步在S310判斷節(jié)點i是否有后續(xù)的兄弟節(jié)點。如果S310判斷節(jié)點i有后續(xù)的兄弟節(jié)點,則在S311選擇節(jié)點i的后一個兄弟節(jié)點作為新的待合并節(jié),然后回到S302。如果S310判斷節(jié)點i沒有后續(xù)的兄弟節(jié)點,則在S312選擇節(jié)點i的父節(jié)點作為回溯節(jié)點。在S313判斷回溯節(jié)點是否為根節(jié)點,如果S313的判斷結(jié)果為“是”,則針對第一樹形結(jié)構(gòu)和第二樹形結(jié)構(gòu)的合并結(jié)束(S317);如果S313的判斷結(jié)果是“否”,則在S314進一步判斷當(dāng)前回溯節(jié)點是否有后續(xù)的兄弟節(jié)點。如果S314的判斷結(jié)果為“是”,則在S316選擇當(dāng)前回溯節(jié)點的后一個兄弟節(jié)點作為新的待合并節(jié)點,然后回到S302。如果S314的判斷結(jié)果為“否”,則在S315選擇當(dāng)前回溯節(jié)點的父節(jié)點作為新的回溯節(jié)點,然后回到S313。通過逐級回溯,直至回溯至根節(jié)點(即S313的判斷結(jié)果為“是”),則針對第一樹形結(jié)構(gòu)和第二樹形結(jié)構(gòu)的合并結(jié)束(S317)。
附加的,如果當(dāng)前選擇的待合并節(jié)點被配置為需刪除節(jié)點,可不對該待合并節(jié)點進行合并操作,并且從第一樹形結(jié)構(gòu)刪除與該待合并節(jié)點相對應(yīng)的節(jié)點(如果有)。然后直接跳至S310(通常根節(jié)點不會被配置為需刪除節(jié)點)并完成針對后續(xù)其他節(jié)點的合并處理。
根據(jù)本發(fā)明的另一方面,提供了一種用于合并樹形結(jié)構(gòu)的裝置,該樹形結(jié)構(gòu)包括第一樹形結(jié)構(gòu)和第二樹形結(jié)構(gòu),該裝置包括:節(jié)點選擇單元,所述節(jié)點選擇單元從第二樹形結(jié)構(gòu)中選擇待合并節(jié)點;節(jié)點合并單元,所述節(jié)點合并單元對所述待合并節(jié)點進行合并處理。所述合并處理包括:判斷所述第一樹形結(jié)構(gòu)中是否存在與所述待合并節(jié)點相對應(yīng)的節(jié)點,并根據(jù)判斷結(jié)果執(zhí)行以下一者:在所述第一樹形結(jié)構(gòu)中存在與所述待合并節(jié)點相對應(yīng)的節(jié)點的情況下,將所述待合并節(jié)點合并至所述第一樹形結(jié)構(gòu)中與所述待合并節(jié)點相 對應(yīng)的節(jié)點;及在所述第一樹形結(jié)構(gòu)中不存在與所述待合并節(jié)點相對應(yīng)的節(jié)點的情況下,將所述待合并節(jié)點添加至所述第一樹形結(jié)構(gòu)中與該待合并節(jié)點的父節(jié)點相對應(yīng)的節(jié)點下。其中,基于節(jié)點的標(biāo)識信息來確定不同樹形結(jié)構(gòu)中的節(jié)點是否互相對應(yīng)。
優(yōu)選地,將所述待合并節(jié)點合并至所述第一樹形結(jié)構(gòu)中與所述待合并節(jié)點相對應(yīng)的節(jié)點包括以下至少一者:
在一級合并策略為“合并”的情況下,合并后的節(jié)點具有所述待合并節(jié)點和所述與所述待合并節(jié)點相對應(yīng)的節(jié)點所具有的所有屬性;以及
在一級合并策略為“替換”的情況下,合并后的節(jié)點僅具有所述待合并節(jié)點所具有的所有屬性。
優(yōu)選地,在一級合并策略為“合并”的情況下:針對所述待合并節(jié)點和所述與所述待合并節(jié)點相對應(yīng)的節(jié)點均具有的屬性以及僅所述待合并節(jié)點所具有的屬性,所述合并后的節(jié)點的該屬性的屬性值等于所述待合并節(jié)點的該屬性的屬性值;以及針對僅所述與所述待合并節(jié)點相對應(yīng)的節(jié)點所具有的屬性,所述合并后的節(jié)點的該屬性的屬性值等于所述與所述待合并節(jié)點相對應(yīng)的節(jié)點的該屬性的屬性值。
優(yōu)選地,在所述第一樹形結(jié)構(gòu)中存在與所述待合并節(jié)點相對應(yīng)的節(jié)點的情況下,所述節(jié)點合并單元還基于二級合并策略處理所述第二樹形結(jié)構(gòu)中所述待合并節(jié)點的下級節(jié)點。
優(yōu)選地,基于二級合并策略處理所述第二樹形結(jié)構(gòu)中所述待合并節(jié)點的下級節(jié)點包括以下至少一者:在所述二級合并策略為“合并”的情況下,由所述節(jié)點選擇單元依次選擇所述待合并節(jié)點的子節(jié)點作為新的待合并節(jié)點,所述節(jié)點合并單元對該新的待合并節(jié)點進行所述合并處理;在所述二級合并策略為“前插”的情況下,所述節(jié)點合并單元將所述待合并節(jié)點的所有下級節(jié)點按照原有路徑和原有屬性信息添加至所述第一樹形結(jié)構(gòu)中,并且所述待 合并節(jié)點的下級節(jié)點被添加在所述與所述待合并節(jié)點相對應(yīng)的節(jié)點的下級節(jié)點之前;在所述二級合并策略為“追加”的情況下,所述節(jié)點合并單元將所述待合并節(jié)點的所有下級節(jié)點按照原有路徑和原有屬性信息添加至所述第一樹形結(jié)構(gòu)中,并且所述待合并節(jié)點的下級節(jié)點被添加在所述與所述待合并節(jié)點相對應(yīng)的節(jié)點的下級節(jié)點之后;在所述二級合并策略為“覆蓋”的情況下,所述節(jié)點合并單元將所述待合并節(jié)點的所有下級節(jié)點按照原有路徑和原有屬性信息添加至所述第一樹形結(jié)構(gòu)中,并且刪除所述與所述待合并節(jié)點相對應(yīng)的節(jié)點原有的下級節(jié)點。
優(yōu)選地,將所述待合并節(jié)點添加至所述第一樹形結(jié)構(gòu)中與該待合并節(jié)點的父節(jié)點相對應(yīng)的節(jié)點下包括:添加至所述第一樹形結(jié)構(gòu)中的該節(jié)點的屬性信息和所述第二樹形結(jié)構(gòu)中所述待合并節(jié)點的屬性信息相同。
優(yōu)選地,在所述第一樹形結(jié)構(gòu)中不存在與所述待合并節(jié)點相對應(yīng)的節(jié)點的情況下,所述節(jié)點合并單元將所述第二樹形文件中所述待合并節(jié)點的所有下級節(jié)點按照原有路徑和原有屬性信息添加至所述第一樹形結(jié)構(gòu)中。
優(yōu)選地,在從第二樹形結(jié)構(gòu)中選擇待合并節(jié)點后,如果所述待合并節(jié)點被配置為需刪除節(jié)點,則合并后的樹形結(jié)構(gòu)中不包括與所述待合并節(jié)點相對應(yīng)的節(jié)點。
優(yōu)選地,在從第二樹形結(jié)構(gòu)中選擇待合并節(jié)點前,所述節(jié)點合并單元基于所述第一樹形結(jié)構(gòu)和所述第二樹形結(jié)構(gòu)的根節(jié)點的所述標(biāo)識信息相同來確定合并所述第一樹形結(jié)構(gòu)和所述第二樹形結(jié)構(gòu)。
優(yōu)選地,所述第一樹形結(jié)構(gòu)和所述第二樹形結(jié)構(gòu)被存儲在不同的文件中。
優(yōu)選地,在同一樹形結(jié)構(gòu)中所述標(biāo)識信息能夠唯一地識別節(jié)點。
優(yōu)選地,節(jié)點的所述標(biāo)識信息包括該節(jié)點的路徑信息和該節(jié)點的名稱信息。
優(yōu)選地,被指示為集合節(jié)點的節(jié)點的所述標(biāo)識信息還包括該節(jié)點在集合內(nèi)的編號信息。
可以在與計算機可讀介質(zhì)相結(jié)合的計算機程序、軟件、和/或固件中實施上述方法和裝置,該計算機可讀介質(zhì)可由計算機和/或處理器運行。計算機可讀介質(zhì)的例子包括但不限于電信號(通過有線和/或無線連接傳送的)和/或計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)的示例包括但不限于只讀存儲器(ROM)、隨機存取存儲器(RAM)、寄存器、高速緩沖存儲器、半導(dǎo)體存儲器裝置、磁介質(zhì)(諸如但不限于內(nèi)部硬盤和可移動磁盤)、磁光介質(zhì)、和/或諸如CD-ROM磁盤和/或數(shù)字多功能磁盤(DVD)的光學(xué)介質(zhì)。
以上結(jié)合附圖詳細(xì)描述了本發(fā)明的優(yōu)選實施方式,但是,本發(fā)明并不限于上述實施方式中的具體細(xì)節(jié),在本發(fā)明的技術(shù)構(gòu)思范圍內(nèi),可以對本發(fā)明的技術(shù)方案進行多種簡單變形,這些簡單變形均屬于本發(fā)明的保護范圍。
另外需要說明的是,在上述具體實施方式中所描述的各個具體技術(shù)特征,在不矛盾的情況下,可以通過任何合適的方式進行組合。為了避免不必要的重復(fù),本發(fā)明對各種可能的組合方式不再另行說明。
此外,本發(fā)明的各種不同的實施方式之間也可以進行任意組合,只要其不違背本發(fā)明的思想,其同樣應(yīng)當(dāng)視為本發(fā)明所公開的內(nèi)容。