本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,尤其涉及一種存儲文件的解析方法和裝置。
背景技術(shù):
在現(xiàn)有的技術(shù)方案中,將存儲文件的內(nèi)容顯示到交互式電子白板的UI上,是通過將該存儲文件的格式從存儲格式直接解析為內(nèi)存中的一種數(shù)據(jù)結(jié)構(gòu)格式,即內(nèi)存模型,并對內(nèi)存模型進(jìn)行渲染來實現(xiàn)的。由于現(xiàn)有技術(shù)中的解析過程是將文件的格式從存儲格式直接解析為內(nèi)存模型,因此,不管是文件的存儲格式發(fā)生變化,抑或是內(nèi)存模型發(fā)生變化,均需要對解析過程的實現(xiàn)邏輯進(jìn)行修改。例如,在將xml文件的內(nèi)容顯示至交互式電子白板的UI上時,使用解析邏輯a將該xml文件解析為內(nèi)存模型,而在存儲文件中增加一種json類型的文件之后,在將json文件的內(nèi)容顯示至交互式電子白板的UI上時,則需要先將解析邏輯a修改為能夠解析xml文件和json文件的解析邏輯b之后,再將該json文件解析為內(nèi)存模型。再例如,在將存儲文件解析為內(nèi)存模型A時,采用的是解析邏輯c,但是在內(nèi)存模型中新增一個內(nèi)存模型B以實現(xiàn)新的功能之后,則需要對解析邏輯c進(jìn)行修改以使部分存儲文件能夠被解析為內(nèi)存模型A,同時另一部分存儲文件能夠被解析為內(nèi)存模型B。因此,現(xiàn)有的技術(shù)方案導(dǎo)致交互式電子白板上的軟件的兼容性差,實現(xiàn)格式兼容的過程復(fù)雜且困難。
技術(shù)實現(xiàn)要素:
本發(fā)明提出一種存儲文件的解析方法和裝置,能夠提高設(shè)備對文件格式的兼容性,且使得實現(xiàn)文件格式兼容的過程容易、簡單。
本發(fā)明提供的一種存儲文件的解析方法,具體包括:
讀取存儲文件;其中,所述存儲文件中包括與所述存儲文件的格式所對應(yīng)的解析邏輯識別碼;
根據(jù)預(yù)先設(shè)置的與所述解析邏輯識別碼所對應(yīng)的解析邏輯,將所述存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu);其中,所述中間格式數(shù)據(jù)結(jié)構(gòu)中包括與所述存儲文件中的各個內(nèi)容元素分別對應(yīng)的元素識別碼;
根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件;其中,所述內(nèi)存存儲文件為所述存儲文件在內(nèi)存中的映射。
進(jìn)一步地,所述根據(jù)預(yù)先設(shè)置的與所述解析邏輯識別碼所對應(yīng)的解析邏輯,將所述存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu),具體包括:
根據(jù)所述解析邏輯識別碼,從預(yù)先設(shè)置的解析管理器中獲取所述解析邏輯識別碼所對應(yīng)的所述解析邏輯;
根據(jù)所述解析邏輯,將所述存儲文件解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
進(jìn)一步地,所述解析邏輯中包括第一解析邏輯和第二解析邏輯;
所述根據(jù)所述解析邏輯,將所述存儲文件解析為所述中間格式數(shù)據(jù)結(jié)構(gòu),具體包括:
根據(jù)所述第一解析邏輯,調(diào)用與所述存儲文件的格式所對應(yīng)的格式解析器,將所述存儲文件解析為相應(yīng)的格式數(shù)據(jù)結(jié)構(gòu);
根據(jù)所述第二解析邏輯,對所述格式數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)引用關(guān)系進(jìn)行修改,將所述格式數(shù)據(jù)結(jié)構(gòu)解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
進(jìn)一步地,所述根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件,具體包括:
根據(jù)所述元素識別碼,從預(yù)先設(shè)置的轉(zhuǎn)換管理器中獲取所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯;
根據(jù)所述轉(zhuǎn)換邏輯,對所述中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行遞歸,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為所述內(nèi)存存儲文件。
進(jìn)一步地,在所述根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏 輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件之后,還包括:
將所述內(nèi)存存儲文件中的各個內(nèi)容元素渲染至顯示屏中顯示。
相應(yīng)地,本發(fā)明還提供了一種存儲文件的解析裝置,具體包括:
存儲文件讀取模塊,用于讀取存儲文件;其中,所述存儲文件中包括與所述存儲文件的格式所對應(yīng)的解析邏輯識別碼;
存儲文件解析模塊,用于根據(jù)預(yù)先設(shè)置的與所述解析邏輯識別碼所對應(yīng)的解析邏輯,將所述存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu);其中,所述中間格式數(shù)據(jù)結(jié)構(gòu)中包括與所述存儲文件中的各個內(nèi)容元素分別對應(yīng)的元素識別碼;以及,
中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換模塊,用于根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件;其中,所述內(nèi)存存儲文件為所述存儲文件在內(nèi)存中的映射。
進(jìn)一步地,所述存儲文件解析模塊,具體包括:
解析邏輯獲取單元,用于根據(jù)所述解析邏輯識別碼,從預(yù)先設(shè)置的解析管理器中獲取所述解析邏輯識別碼所對應(yīng)的所述解析邏輯;以及,
文件解析單元,用于根據(jù)所述解析邏輯,將所述存儲文件解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
進(jìn)一步地,所述解析邏輯中包括第一解析邏輯和第二解析邏輯;
所述文件解析單元,具體包括:
第一解析子單元,用于根據(jù)所述第一解析邏輯,調(diào)用與所述存儲文件的格式所對應(yīng)的格式解析器,將所述存儲文件解析為相應(yīng)的格式數(shù)據(jù)結(jié)構(gòu);以及,
第二解析子單元,用于根據(jù)所述第二解析邏輯,對所述格式數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)引用關(guān)系進(jìn)行修改,將所述格式數(shù)據(jù)結(jié)構(gòu)解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
進(jìn)一步地,所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換模塊,具體包括:
轉(zhuǎn)換邏輯獲取單元,用于根據(jù)所述元素識別碼,從預(yù)先設(shè)置的轉(zhuǎn)換管理器中獲取所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯;以及,
格式轉(zhuǎn)換單元,用于根據(jù)所述轉(zhuǎn)換邏輯,對所述中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行遞 歸,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為所述內(nèi)存存儲文件。
進(jìn)一步地,所述存儲文件的解析裝置,還包括:
渲染顯示模塊,用于將所述內(nèi)存存儲文件中的各個內(nèi)容元素渲染至顯示屏中顯示。
實施本發(fā)明,具有如下有益效果:
本發(fā)明提供的存儲文件的解析方法及裝置,通過根據(jù)與存儲文件的格式相對應(yīng)的解析邏輯,將存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu),并且根據(jù)與該中間格式數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容元素相對應(yīng)的轉(zhuǎn)換邏輯,將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件,從而使得存儲文件的格式的變化與存儲文件的內(nèi)容的變化相互隔離,即在解析過程能夠?qū)Χ喾N不同格式的存儲文件進(jìn)行解析,而不管該存儲文件中包括何種內(nèi)容元素,在轉(zhuǎn)換過程能夠?qū)Χ喾N包含不同內(nèi)容元素的中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,而不管相對應(yīng)的存儲文件為何種格式。因此,本發(fā)明實施例提供的存儲文件的解析方法能夠提高設(shè)備對文件格式的兼容性。同時,由于當(dāng)存儲文件的格式發(fā)生變化時只需添加新的解析邏輯,當(dāng)存儲文件的內(nèi)容元素發(fā)生變化時只需添加新的轉(zhuǎn)換邏輯,因此實現(xiàn)格式兼容的過程容易、簡單。
附圖說明
圖1是本發(fā)明提供的存儲文件的解析方法的一個實施例的流程示意圖;
圖2是本發(fā)明提供的存儲文件的解析方法的一個實施例的整數(shù)X屬性所對應(yīng)的中間格式的示意圖;
圖3是本發(fā)明提供的存儲文件的解析方法的一個實施例的坐標(biāo)點(diǎn)Point屬性所對應(yīng)的中間格式的示意圖;
圖4是本發(fā)明提供的存儲文件的解析方法的一個實施例的背景Background屬性的類型為顏色時所對應(yīng)的中間格式的示意圖;
圖5是本發(fā)明提供的存儲文件的解析方法的一個實施例的背景Background屬性的類型為圖片時所對應(yīng)的中間格式的示意圖;
圖6是本發(fā)明提供的存儲文件的解析方法的一個實施例的坐標(biāo)點(diǎn)數(shù)組Points屬性所對應(yīng)的中間格式的示意圖;
圖7是本發(fā)明提供的存儲文件的解析方法的一個實施例的樹型的中間格式數(shù)據(jù)結(jié)構(gòu)的示意圖;
圖8是本發(fā)明提供的存儲文件的解析方法的一個實施例的解析過程的流程示意圖;
圖9是本發(fā)明提供的存儲文件的解析方法的一個實施例的轉(zhuǎn)換過程的流程示意圖;
圖10是本發(fā)明提供的存儲文件的解析裝置的一個實施例的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
參見圖1,是本發(fā)明提供的存儲文件的解析方法的一個實施例的流程示意圖,包括步驟S11至S13,具體如下:
S11:讀取存儲文件;其中,所述存儲文件中包括與所述存儲文件的格式所對應(yīng)的解析邏輯識別碼;
S12:根據(jù)預(yù)先設(shè)置的與所述解析邏輯識別碼所對應(yīng)的解析邏輯,將所述存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu);其中,所述中間格式數(shù)據(jù)結(jié)構(gòu)中包括與所述存儲文件中的各個內(nèi)容元素分別對應(yīng)的元素識別碼;
S13:根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件;其中,所述內(nèi)存存儲文件為所述存儲文件在內(nèi)存中的映射。
需要說明的是,本發(fā)明所提供的方法主要由解析過程和轉(zhuǎn)換過程組成,即 在將某一存儲文件解析并轉(zhuǎn)換為內(nèi)存存儲文件時,先根據(jù)相應(yīng)的解析邏輯將該存儲文件解析為對應(yīng)的中間格式數(shù)據(jù)結(jié)構(gòu)后,再根據(jù)相應(yīng)的轉(zhuǎn)換邏輯將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件。解析過程所采用的解析邏輯由所解析的存儲文件的格式?jīng)Q定。轉(zhuǎn)換過程所采用的轉(zhuǎn)換邏輯由所轉(zhuǎn)換的中間格式數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容元素共同決定。
需要進(jìn)一步說明的是,存儲文件的格式可以為xml格式、json格式或者svg格式等。中間格式數(shù)據(jù)結(jié)構(gòu)可以為樹型結(jié)構(gòu),也可以為鏈表、堆棧等其他類型的數(shù)據(jù)結(jié)構(gòu)。
以樹型的中間格式數(shù)據(jù)結(jié)構(gòu)為例說明中間格式數(shù)據(jù)結(jié)構(gòu)中的節(jié)點(diǎn)引用關(guān)系。該中間格式數(shù)據(jù)結(jié)構(gòu)中的每個節(jié)點(diǎn)中均包括Name,Value和Children三個項,分別表示節(jié)點(diǎn)的名稱、節(jié)點(diǎn)的值和節(jié)點(diǎn)的子節(jié)點(diǎn)。
當(dāng)某一節(jié)點(diǎn)表示的屬性為整數(shù)、小數(shù)、字符串等基礎(chǔ)數(shù)據(jù)類型時,該節(jié)點(diǎn)的Name值為該屬性的名稱,該節(jié)點(diǎn)的Value值為該屬性的值,該節(jié)點(diǎn)的Children值為空。例如:當(dāng)屬性為X=100時,該屬性所對應(yīng)的中間格式如圖2所示。
當(dāng)某一節(jié)點(diǎn)表示的屬性為復(fù)合數(shù)據(jù)類型,即該屬性為由若干單一屬性組成的復(fù)合屬性時,該節(jié)點(diǎn)的Name值為該屬性的名稱,該節(jié)點(diǎn)的Value值為空,該節(jié)點(diǎn)的Children指向表示各個單一屬性的節(jié)點(diǎn)。例如,當(dāng)屬性為坐標(biāo)點(diǎn)Point(100,200)時,該屬性由單一屬性cx=100和單一屬性cy=200組成,因此該屬性所對應(yīng)的中間格式如圖3所示。
當(dāng)某一節(jié)點(diǎn)表示的屬性可能是基礎(chǔ)數(shù)據(jù)類型,也可能是復(fù)合數(shù)據(jù)類型時,該節(jié)點(diǎn)的Name值為該屬性的名稱,該節(jié)點(diǎn)的Value值為空,該節(jié)點(diǎn)的Children指向表示該屬性的具體的數(shù)據(jù)類型和內(nèi)容的節(jié)點(diǎn)。例如,當(dāng)屬性為背景Background時,該屬性的類型可能是顏色,也可能是圖片。當(dāng)該屬性的類型為顏色時,該屬性所對應(yīng)的中間格式如圖4所示。
當(dāng)該屬性的類型為圖片時,該屬性所對應(yīng)的中間格式如圖5所示。
當(dāng)某一節(jié)點(diǎn)表示的屬性為數(shù)組類型時,該節(jié)點(diǎn)的Name值為該屬性的名稱,該節(jié)點(diǎn)的Value值為空,該節(jié)點(diǎn)的Children指向表示該屬性中的各個數(shù)組元素的 屬性的節(jié)點(diǎn)。例如,當(dāng)屬性為由兩個坐標(biāo)點(diǎn)Point組成的Points數(shù)組時,該屬性所對應(yīng)的中間格式如圖6所示。
在一個優(yōu)選的實施方式中,當(dāng)需要將某一存儲文件解析并轉(zhuǎn)換為內(nèi)存存儲文件時,計算機(jī)讀取該存儲文件,并根據(jù)該存儲文件中的解析邏輯的版本號所對應(yīng)的解析邏輯,即解析邏輯識別碼所對應(yīng)的解析邏輯,將該存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu)。隨后,計算機(jī)遍歷該中間格式數(shù)據(jù)結(jié)構(gòu),并根據(jù)其中的各個內(nèi)容元素的元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件。內(nèi)存存儲文件為存儲文件在內(nèi)存中的映射。其中,中間格式數(shù)據(jù)結(jié)構(gòu)可以為樹型結(jié)構(gòu),也可以為鏈表、堆棧等其他類型的數(shù)據(jù)結(jié)構(gòu)。當(dāng)中間格式數(shù)據(jù)結(jié)構(gòu)為樹型結(jié)構(gòu)時,存儲文件經(jīng)過解析后,其中的各個內(nèi)容元素分別對應(yīng)解析為該樹型結(jié)構(gòu)中的具有共同父節(jié)點(diǎn)的各個子樹,各個子樹的根節(jié)點(diǎn)中包括分別對應(yīng)的內(nèi)容元素的元素識別碼,各個子樹中的各個子節(jié)點(diǎn)分別為其父節(jié)點(diǎn)的屬性。
例如,假設(shè)某一xml格式的存儲文件如下:
其中包括內(nèi)容元素<iwb:shape>和內(nèi)容元素<iwb:magnifier>,分別表示一個橢圓和一個放大鏡。當(dāng)需要將該存儲文件解析并轉(zhuǎn)換為內(nèi)存存儲文件時,計算 機(jī)讀取該存儲文件,并根據(jù)該存儲文件中的解析邏輯識別碼獲得相對應(yīng)的能夠解析xml格式的文件的解析邏輯,并根據(jù)該解析邏輯將存儲文件解析為如圖7所示的樹型的中間格式數(shù)據(jù)結(jié)構(gòu)。
其中,內(nèi)容元素<iwb:shape>和內(nèi)容元素<iwb:magnifier>分別對應(yīng)解析為共同父節(jié)點(diǎn)為elements節(jié)點(diǎn)的兩棵子樹。內(nèi)容元素<iwb:shape>所對應(yīng)的子樹的根節(jié)點(diǎn)中的節(jié)點(diǎn)名稱為內(nèi)容元素<iwb:shape>的元素識別碼,即iwb:shape,內(nèi)容元素<iwb:shape>的屬性對應(yīng)解析為該根節(jié)點(diǎn)的子節(jié)點(diǎn)或者孫節(jié)點(diǎn)。內(nèi)容元素<iwb:magnifier>所對應(yīng)的子樹的根節(jié)點(diǎn)中的節(jié)點(diǎn)名稱為內(nèi)容元素<iwb:magnifier>的元素識別碼,即iwb:magnifier,內(nèi)容元素<iwb:magnifier>的屬性對應(yīng)解析為該根節(jié)點(diǎn)的子節(jié)點(diǎn)或者孫節(jié)點(diǎn)。
在將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件時,計算機(jī)遍歷該中間格式數(shù)據(jù)結(jié)構(gòu),根據(jù)其中的所有的元素識別碼,即iwb:shape和iwb:magnifier獲得共同對應(yīng)的轉(zhuǎn)換邏輯,該轉(zhuǎn)換邏輯既能夠轉(zhuǎn)換內(nèi)容元素<iwb:shape>所對應(yīng)的子樹,又能夠轉(zhuǎn)換內(nèi)容元素<iwb:magnifier>所對應(yīng)的子樹。根據(jù)該轉(zhuǎn)換邏輯,將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為相應(yīng)的內(nèi)存存儲文件,該內(nèi)存存儲文件中包括一個shape內(nèi)容元素及其相應(yīng)的屬性,以及一個magnifier內(nèi)容元素及其相應(yīng)的屬性。
由此可見,通過根據(jù)與存儲文件的格式相對應(yīng)的解析邏輯,將存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu),并且根據(jù)與該中間格式數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容元素相對應(yīng)的轉(zhuǎn)換邏輯,將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件,從而使得存儲文件的格式的變化與存儲文件的內(nèi)容的變化相互隔離,即在解析過程能夠?qū)Χ喾N不同格式的存儲文件進(jìn)行解析,而不管該存儲文件中包括何種內(nèi)容元素,在轉(zhuǎn)換過程能夠?qū)Χ喾N包含不同內(nèi)容元素的中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,而不管相對應(yīng)的存儲文件為何種格式。因此,本發(fā)明實施例提供的存儲文件的解析方法能夠提高設(shè)備對文件格式的兼容性。同時,由于當(dāng)存儲文件的格式發(fā)生變化時只需添加新的解析邏輯,當(dāng)存儲文件的內(nèi)容元素發(fā)生變化時只需添加新的轉(zhuǎn)換邏輯,即可將具有新格式或者具有新內(nèi)容元素的存儲文件解析并轉(zhuǎn)換為相應(yīng)的內(nèi)存存儲文件,因此實現(xiàn)文件格式兼容的過程容易、簡單。
進(jìn)一步地,所述根據(jù)預(yù)先設(shè)置的與所述解析邏輯識別碼所對應(yīng)的解析邏輯,將所述存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu),具體包括:
根據(jù)所述解析邏輯識別碼,從預(yù)先設(shè)置的解析管理器中獲取所述解析邏輯識別碼所對應(yīng)的所述解析邏輯;
根據(jù)所述解析邏輯,將所述存儲文件解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
需要說明的是,解析邏輯由解析管理器進(jìn)行存儲和管理,解析管理器中的每個解析邏輯均具有唯一的版本號,即解析邏輯識別碼。每當(dāng)增加一種新的存儲文件的格式時,需要預(yù)先在解析管理器中添加相對應(yīng)的解析邏輯。當(dāng)需要將存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu)時,計算機(jī)在解析管理器中查找到該存儲文件中的解析邏輯識別碼所對應(yīng)的解析邏輯并獲取該解析邏輯,并根據(jù)該解析邏輯將存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu)。
例如,如圖8所示為本實施方式的解析過程的流程示意圖,解析管理器81中存儲有解析邏輯A和解析邏輯B。當(dāng)需要將格式為A的存儲文件A解析為中間格式數(shù)據(jù)結(jié)構(gòu)82時,則從解析管理器81中獲取解析邏輯A,并根據(jù)該解析邏輯A對存儲文件A進(jìn)行解析。當(dāng)需要將格式為B的存儲文件B解析為中間格式數(shù)據(jù)結(jié)構(gòu)82時,則從解析管理器81中獲取解析邏輯B,并根據(jù)該解析邏輯B對存儲文件B進(jìn)行解析。當(dāng)存儲文件中新增加一種格式為C的存儲文件C時,則在解析管理器81中添加能夠解析該存儲文件C的解析邏輯C。
進(jìn)一步地,所述解析邏輯中包括第一解析邏輯和第二解析邏輯;
所述根據(jù)所述解析邏輯,將所述存儲文件解析為所述中間格式數(shù)據(jù)結(jié)構(gòu),具體包括:
根據(jù)所述第一解析邏輯,調(diào)用與所述存儲文件的格式所對應(yīng)的格式解析器,將所述存儲文件解析為相應(yīng)的格式數(shù)據(jù)結(jié)構(gòu);
根據(jù)所述第二解析邏輯,對所述格式數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)引用關(guān)系進(jìn)行修改,將所述格式數(shù)據(jù)結(jié)構(gòu)解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
需要說明的是,解析邏輯分為兩個部分,即第一解析邏輯和第二解析邏輯。第一解析邏輯與存儲文件的格式相對應(yīng),用于調(diào)用與存儲文件的格式相對應(yīng)的格式解析器,從而將存儲文件解析為相應(yīng)的格式數(shù)據(jù)結(jié)構(gòu)。第二解析邏輯用于對該格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行遞歸,從而遍歷該格式數(shù)據(jù)結(jié)構(gòu)并且修改其中的節(jié)點(diǎn)引用關(guān)系,將該格式數(shù)據(jù)結(jié)構(gòu)進(jìn)一步解析為中間格式數(shù)據(jù)結(jié)構(gòu)。其中,格式數(shù)據(jù)結(jié)構(gòu)可以為樹型結(jié)構(gòu),也可以為鏈表、堆棧等其他類型的數(shù)據(jù)結(jié)構(gòu)。不同的存儲文件的格式所對應(yīng)的格式數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)引用關(guān)系可能相同,也可能不相同。
例如,在將某一xml格式的存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu)時,先根據(jù)解析邏輯中的第一解析邏輯,調(diào)用xml格式解析器,將該存儲文件解析為xml格式數(shù)據(jù)結(jié)構(gòu),即xml樹。隨后,根據(jù)解析邏輯中的第二解析邏輯,對該xml格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行遞歸,從而遍歷該xml格式數(shù)據(jù)結(jié)構(gòu)并且修改其中的節(jié)點(diǎn)引用關(guān)系,將該xml格式數(shù)據(jù)結(jié)構(gòu)進(jìn)一步解析為中間格式數(shù)據(jù)結(jié)構(gòu)。
在另一個優(yōu)選的實施方式中,所述根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件,具體包括:
根據(jù)所述元素識別碼,從預(yù)先設(shè)置的轉(zhuǎn)換管理器中獲取所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯;
根據(jù)所述轉(zhuǎn)換邏輯,對所述中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行遞歸,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為所述內(nèi)存存儲文件。
需要說明的是,轉(zhuǎn)換邏輯由轉(zhuǎn)換管理器進(jìn)行存儲和管理,轉(zhuǎn)換管理器中的每個轉(zhuǎn)換邏輯中均具有其能夠轉(zhuǎn)換的所有內(nèi)容元素的元素識別碼。每當(dāng)存儲文件中的內(nèi)容元素發(fā)生變化以實現(xiàn)新的功能時,需要預(yù)先在轉(zhuǎn)換管理器中添加相對應(yīng)的轉(zhuǎn)換邏輯。當(dāng)需要將中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件時,在轉(zhuǎn)換管理器中查找到該中間格式數(shù)據(jù)結(jié)構(gòu)中的每個內(nèi)容元素的元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯并獲取該轉(zhuǎn)換邏輯,并根據(jù)該轉(zhuǎn)換邏輯,對該中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行遞歸,從而將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件。
例如,如圖9所示的本實施方式的轉(zhuǎn)換過程的流程示意圖,轉(zhuǎn)換管理器92 中存儲有轉(zhuǎn)換邏輯A和轉(zhuǎn)換邏輯B。假設(shè)其中的轉(zhuǎn)換邏輯A能夠轉(zhuǎn)換包括內(nèi)容元素a和內(nèi)容元素b的中間格式數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換邏輯B能夠轉(zhuǎn)換包括內(nèi)容元素a、內(nèi)容元素b和內(nèi)容元素c的中間格式數(shù)據(jù)結(jié)構(gòu)。當(dāng)中間格式數(shù)據(jù)結(jié)構(gòu)91中包括內(nèi)容元素a和內(nèi)容元素b時,則從轉(zhuǎn)換管理器92中獲取轉(zhuǎn)換邏輯A,并根據(jù)該轉(zhuǎn)換邏輯A將該中間格式數(shù)據(jù)結(jié)構(gòu)91轉(zhuǎn)換為相應(yīng)的內(nèi)存存儲文件A,轉(zhuǎn)換所得的內(nèi)存存儲文件A中包括內(nèi)容元素a及其相應(yīng)的屬性,以及內(nèi)容元素b及其相應(yīng)的屬性。當(dāng)需要在包括內(nèi)容元素a和內(nèi)容元素b的存儲文件中增加內(nèi)容元素d以實現(xiàn)新的功能時,則在轉(zhuǎn)換管理器92中添加能夠轉(zhuǎn)換包括內(nèi)容元素a、內(nèi)容元素b和內(nèi)容元素d的中間格式數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換邏輯C。
進(jìn)一步地,在所述根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件之后,還包括:
將所述內(nèi)存存儲文件中的各個內(nèi)容元素渲染至顯示屏中顯示。
需要說明的是,在將存儲文件解析并且轉(zhuǎn)換為內(nèi)存存儲文件之后,對該內(nèi)存存儲文件中的內(nèi)容元素進(jìn)行渲染,使之在顯示屏中顯示。
例如,某一存儲文件中包括表示橢圓的內(nèi)容元素a和表示放大鏡的內(nèi)容元素b,則與之相對應(yīng)的內(nèi)存存儲文件中包括內(nèi)容元素a及其相應(yīng)的屬性,以及內(nèi)容元素b及其相應(yīng)的屬性。在對該內(nèi)存存儲文件進(jìn)行渲染之后,設(shè)備的顯示屏上顯示一個橢圓和一個放大鏡。
本發(fā)明實施例提供的存儲文件的解析方法,通過根據(jù)與存儲文件的格式相對應(yīng)的解析邏輯,將存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu),并且根據(jù)與該中間格式數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容元素相對應(yīng)的轉(zhuǎn)換邏輯,將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件,從而使得存儲文件的格式的變化與存儲文件的內(nèi)容的變化相互隔離,即在解析過程能夠?qū)Χ喾N不同格式的存儲文件進(jìn)行解析,而不管該存儲文件中包括何種內(nèi)容元素,在轉(zhuǎn)換過程能夠?qū)Χ喾N包含不同內(nèi)容元素的中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,而不管相對應(yīng)的存儲文件為何種格式。因此,本發(fā)明實施 例提供的存儲文件的解析方法能夠提高設(shè)備對文件格式的兼容性。同時,由于當(dāng)存儲文件的格式發(fā)生變化時只需添加新的解析邏輯,當(dāng)存儲文件的內(nèi)容元素發(fā)生變化時只需添加新的轉(zhuǎn)換邏輯,因此實現(xiàn)格式兼容的過程容易、簡單。
相應(yīng)地,本發(fā)明還提供一種存儲文件的解析裝置,能夠?qū)崿F(xiàn)上述實施例中的存儲文件的解析方法的所有流程。
參見圖10,是本發(fā)明提供的存儲文件的解析裝置的一個實施例的結(jié)構(gòu)示意圖,具體如下:
存儲文件讀取模塊01,用于讀取存儲文件;其中,所述存儲文件中包括與所述存儲文件的格式所對應(yīng)的解析邏輯識別碼;
存儲文件解析模塊02,用于根據(jù)預(yù)先設(shè)置的與所述解析邏輯識別碼所對應(yīng)的解析邏輯,將所述存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu);其中,所述中間格式數(shù)據(jù)結(jié)構(gòu)中包括與所述存儲文件中的各個內(nèi)容元素分別對應(yīng)的元素識別碼;以及,
中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換模塊03,用于根據(jù)預(yù)先設(shè)置的與所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件;其中,所述內(nèi)存存儲文件為所述存儲文件在內(nèi)存中的映射。
進(jìn)一步地,所述存儲文件解析模塊02,具體包括:
解析邏輯獲取單元,用于根據(jù)所述解析邏輯識別碼,從預(yù)先設(shè)置的解析管理器中獲取所述解析邏輯識別碼所對應(yīng)的所述解析邏輯;以及,
文件解析單元,用于根據(jù)所述解析邏輯,將所述存儲文件解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
進(jìn)一步地,所述解析邏輯中包括第一解析邏輯和第二解析邏輯;
所述文件解析單元,具體包括:
第一解析子單元,用于根據(jù)所述第一解析邏輯,調(diào)用與所述存儲文件的格 式所對應(yīng)的格式解析器,將所述存儲文件解析為相應(yīng)的格式數(shù)據(jù)結(jié)構(gòu);以及,
第二解析子單元,用于根據(jù)所述第二解析邏輯,對所述格式數(shù)據(jù)結(jié)構(gòu)的節(jié)點(diǎn)引用關(guān)系進(jìn)行修改,將所述格式數(shù)據(jù)結(jié)構(gòu)解析為所述中間格式數(shù)據(jù)結(jié)構(gòu)。
在另一個優(yōu)選的實施方式中,所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換模塊03,具體包括:
轉(zhuǎn)換邏輯獲取單元,用于根據(jù)所述元素識別碼,從預(yù)先設(shè)置的轉(zhuǎn)換管理器中獲取所述元素識別碼所共同對應(yīng)的轉(zhuǎn)換邏輯;以及,
格式轉(zhuǎn)換單元,用于根據(jù)所述轉(zhuǎn)換邏輯,對所述中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行遞歸,將所述中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為所述內(nèi)存存儲文件。
進(jìn)一步地,所述存儲文件的解析裝置,還包括:
渲染顯示模塊,用于將所述內(nèi)存存儲文件中的各個內(nèi)容元素渲染至顯示屏中顯示。
本發(fā)明實施例提供的存儲文件的解析裝置,通過根據(jù)與存儲文件的格式相對應(yīng)的解析邏輯,將存儲文件解析為中間格式數(shù)據(jù)結(jié)構(gòu),并且根據(jù)與該中間格式數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容元素相對應(yīng)的轉(zhuǎn)換邏輯,將該中間格式數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為內(nèi)存存儲文件,從而使得存儲文件的格式的變化與存儲文件的內(nèi)容的變化相互隔離,即在解析過程能夠?qū)Χ喾N不同格式的存儲文件進(jìn)行解析,而不管該存儲文件中包括何種內(nèi)容元素,在轉(zhuǎn)換過程能夠?qū)Χ喾N包含不同內(nèi)容元素的中間格式數(shù)據(jù)結(jié)構(gòu)進(jìn)行轉(zhuǎn)換,而不管相對應(yīng)的存儲文件為何種格式。因此,本發(fā)明實施例提供的存儲文件的解析方法能夠提高設(shè)備對文件格式的兼容性。同時,由于當(dāng)存儲文件的格式發(fā)生變化時只需添加新的解析邏輯,當(dāng)存儲文件的內(nèi)容元素發(fā)生變化時只需添加新的轉(zhuǎn)換邏輯,因此實現(xiàn)格式兼容的過程容易、簡單。
以上所述是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技 術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍。