可擴展標(biāo)記語言數(shù)據(jù)解析方法及裝置制造方法
【專利摘要】本發(fā)明公開了可擴展標(biāo)記語言數(shù)據(jù)解析方法及裝置。方法包括:終端根據(jù)XML數(shù)據(jù)格式,確定需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息;終端解析Web服務(wù)器發(fā)來的XML數(shù)據(jù)中的元素關(guān)系及屬性關(guān)系,建立元素關(guān)系映射載體和屬性關(guān)系映射載體;終端根據(jù)所述結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個XML數(shù)據(jù)結(jié)構(gòu)中包含的各數(shù)據(jù)項的描述信息,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體,抽取出與所述每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息匹配的數(shù)據(jù)的取值。本發(fā)明提高了XML數(shù)據(jù)解析效率。
【專利說明】可擴展標(biāo)記語言數(shù)據(jù)解析方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術(shù)領(lǐng)域】,具體涉及可擴展標(biāo)記語言數(shù)據(jù)解析方法及裝置。【背景技術(shù)】
[0002]可擴展標(biāo)記語言(XML, Extensible Markup Language)用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,可以用來標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標(biāo)記語言進行定義的源語言。XML定位于傳輸和存儲數(shù)據(jù),其焦點是數(shù)據(jù)的內(nèi)容,提供統(tǒng)一的方法來描述和交換獨立于應(yīng)用程序的數(shù)據(jù)形式。當(dāng)下很多Web應(yīng)用均使用XML進行數(shù)據(jù)傳輸,先是數(shù)據(jù)發(fā)送方與接收方協(xié)商數(shù)據(jù)格式以及XML文檔形式,后由發(fā)送方生成XML通過網(wǎng)絡(luò)鏈路或其他方式傳遞至接收方,接收方根據(jù)協(xié)商XML形式對文檔進行解析和數(shù)據(jù)提取,從而達到遠程數(shù)據(jù)交流的目的。
[0003]目前Web服務(wù)主要是通過本地終端的應(yīng)用和遠程的服務(wù)器進行通訊,XML作為數(shù)據(jù)載體,終端應(yīng)用獲取傳輸來的XML文檔后,根據(jù)服務(wù)協(xié)議對XML進行解析,去逐一理解XML中的元素或?qū)傩?,然后將所需要的?shù)據(jù)提取出來。在此過程中,關(guān)注的重點集中于對數(shù)據(jù)的定義和傳輸,服務(wù)器將各種服務(wù)數(shù)據(jù)組織成不同的XML文檔發(fā)送至終端應(yīng)用,終端應(yīng)用接收到XML以后根據(jù)數(shù)據(jù)協(xié)議,對不同的XML實施不同方式的解析。
[0004]這里可以設(shè)想一種Web服務(wù),在用戶的終端上部署應(yīng)用,可以和遠端服務(wù)器進行數(shù)據(jù)通信。于是在用戶享受Web服務(wù)的過程中,該本地應(yīng)用不斷地請求和接收服務(wù)器端發(fā)送的各種XML,然后針對不同的XML進行解析以獲取服務(wù)數(shù)據(jù)。但是Web服務(wù)的形式會隨著用戶體驗的增加或者用戶的反饋而升級,數(shù)據(jù)通信的方式會隨之改變,當(dāng)初所定義XML格式會有所擴展,格式數(shù)量也會有所增加。由于本地應(yīng)用對XML的解析總是具有針對性,每種格式都有相應(yīng)的解析過程,當(dāng)XML格式變化或數(shù)量增加后,本地應(yīng)用的固件也需要隨之升級以適應(yīng)新的數(shù)據(jù)形式,導(dǎo)致終端應(yīng)用的維護工作越發(fā)繁瑣。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供XML數(shù)據(jù)解析方法及裝置,以提高XML數(shù)據(jù)解析效率。
[0006]本發(fā)明的技術(shù)方案是這樣實現(xiàn)的:
[0007]—種可擴展標(biāo)記語言XML數(shù)據(jù)解析方法,該方法包括:
[0008]終端獲取XML數(shù)據(jù)的協(xié)議標(biāo)識,根據(jù)該協(xié)議標(biāo)識確定XML數(shù)據(jù)格式;根據(jù)XML數(shù)據(jù)格式,確定需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息,其中,每個數(shù)據(jù)項的描述信息包括:載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題;
[0009]終端解析Web服務(wù)器發(fā)來的XML數(shù)據(jù)中的元素關(guān)系及屬性關(guān)系,建立元素關(guān)系映射載體和屬性關(guān)系映射載體,其中元素關(guān)系映射載體包括:元素深度、元素標(biāo)題、元素取值、第一屬性關(guān)系、父元素關(guān)系、第一子元素關(guān)系、前項兄弟元素關(guān)系、后項兄弟元素關(guān)系,屬性關(guān)系映射載體包括:屬性標(biāo)題、屬性取值、從屬元素關(guān)系、前項兄弟屬性關(guān)系、后項兄弟屬性關(guān)系;
[0010]終端根據(jù)所述結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個XML數(shù)據(jù)結(jié)構(gòu)中包含的各數(shù)據(jù)項的描述信息,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體,抽取出與所述每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息匹配的數(shù)據(jù)的取值。
[0011]所述方法進一步包括:
[0012]當(dāng)終端發(fā)現(xiàn)XML數(shù)據(jù)協(xié)議版本更新時,或者終端發(fā)現(xiàn)自身產(chǎn)生了新的XML數(shù)據(jù)解析需求時,更新已有的結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息。
[0013]所述終端確定需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息之后進一步包括:
[0014]終端建立結(jié)構(gòu)描述文檔,該文檔包括:結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息;
[0015]同時,終端建立結(jié)構(gòu)參考載體和結(jié)構(gòu)描述載體,
[0016]所述結(jié)構(gòu)參考載體包括:結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,其中,所述結(jié)構(gòu)起點對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述結(jié)構(gòu)數(shù)目對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)化描述文檔的數(shù)據(jù)項描述;
[0017]所述結(jié)構(gòu)描述載體的數(shù)目與所述結(jié)構(gòu)數(shù)目相同,每個結(jié)構(gòu)描述載體由至少一個數(shù)據(jù)項描述載體組成,每個數(shù)據(jù)項描述載體包括數(shù)據(jù)項取值和數(shù)據(jù)項參考載體,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)參考載體中同一位置的數(shù)據(jù)項參考載體。
[0018]所述終端根據(jù)所述結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個XML數(shù)據(jù)結(jié)構(gòu)中包含的各數(shù)據(jù)項的描述信息,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體為:
[0019]終端根據(jù)結(jié)構(gòu)參考載體中的結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體;
[0020]且,所述終端抽取出與每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息匹配的數(shù)據(jù)的取值之后進一步包括:
[0021]終端將抽取出的數(shù)據(jù)的取值填充到對應(yīng)結(jié)構(gòu)描述載體的數(shù)據(jù)項描述載體的數(shù)據(jù)取值中。
[0022]所述終端遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體包括:
[0023]終端按照該原則:從根元素節(jié)點開始,首先查找元素的屬性節(jié)點以及屬性節(jié)點的后項兄弟節(jié)點,然后查找元素節(jié)點的子節(jié)點,再次查找元素節(jié)點的后項兄弟節(jié)點,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體。
[0024]一種XML數(shù)據(jù)解析裝置,包括:
[0025]需求結(jié)構(gòu)化描述單元:接收應(yīng)用模塊根據(jù)XML數(shù)據(jù)協(xié)議確定的需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息,其中,每個數(shù)據(jù)項的描述信息包括:載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題;
[0026]數(shù)據(jù)關(guān)系映射單元:解析Web服務(wù)器發(fā)來的XML數(shù)據(jù)中的元素關(guān)系及屬性關(guān)系,建立元素關(guān)系映射載體和屬性關(guān)系映射載體,其中元素關(guān)系映射載體包括:元素深度、元素標(biāo)題、元素取值、第一屬性關(guān)系、父元素關(guān)系、第一子元素關(guān)系、前項兄弟元素關(guān)系、后項兄弟元素關(guān)系,屬性關(guān)系映射載體包括:屬性標(biāo)題、屬性取值、從屬元素關(guān)系、前項兄弟屬性關(guān)系、后項兄弟屬性關(guān)系,將元素關(guān)系映射載體和屬性關(guān)系映射載體發(fā)送給解析模塊;
[0027]解析模塊:根據(jù)需求結(jié)構(gòu)化描述單元中的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個XML數(shù)據(jù)結(jié)構(gòu)中包含的各數(shù)據(jù)項的描述信息,遍歷數(shù)據(jù)關(guān)系映射單元發(fā)來的元素關(guān)系映射載體和屬性關(guān)系映射載體,抽取出與所述每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息匹配的數(shù)據(jù)的取值。
[0028]所述需求結(jié)構(gòu)化描述單元進一步包括:
[0029]接收應(yīng)用模塊發(fā)來的更新的需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息。
[0030]所述需求結(jié)構(gòu)化描述單元進一步用于,
[0031]根據(jù)需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息生成結(jié)構(gòu)描述文檔;同時,建立結(jié)構(gòu)參考載體和結(jié)構(gòu)描述載體,所述結(jié)構(gòu)參考載體包括:結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,其中,所述結(jié)構(gòu)起點對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述結(jié)構(gòu)數(shù)目對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)化描述文檔的數(shù)據(jù)項描述;所述結(jié)構(gòu)描述載體的數(shù)目與所述結(jié)構(gòu)數(shù)目相同,每個結(jié)構(gòu)描述載體由至少一個數(shù)據(jù)項描述載體組成,每個數(shù)據(jù)項描述載體包括數(shù)據(jù)項取值和數(shù)據(jù)項參考載體,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)參考載體中同一位置的數(shù)據(jù)項參考載體。
[0032]所述解析單元進一步用于,
[0033]根據(jù)結(jié)構(gòu)參考載體中的結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體;且,將抽取出的數(shù)據(jù)取值填充到對應(yīng)結(jié)構(gòu)描述載體的數(shù)據(jù)項描述載體的數(shù)據(jù)的取值中。
[0034]所述解析單元進一步用于,按照該原則:從根元素節(jié)點開始,首先查找元素的屬性節(jié)點以及屬性節(jié)點的后項兄弟節(jié)點,然后查找元素節(jié)點的子節(jié)點,再次查找元素節(jié)點的后項兄弟節(jié)點,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體。
[0035]與現(xiàn)有技術(shù)相比,本發(fā)明能夠適應(yīng)XML格式的擴展,適用于任何格式的XML數(shù)據(jù),提高了 XML數(shù)據(jù)解析效率。
【專利附圖】
【附圖說明】
[0036]圖1為本發(fā)明實施例提供的XML數(shù)據(jù)解析裝置的組成示意圖;
[0037]圖2為本發(fā)明實施例提供的對終端應(yīng)用模塊的XML數(shù)據(jù)解析需求進行結(jié)構(gòu)化處理的方法流程圖;
[0038]圖3為本發(fā)明實施例提供的結(jié)構(gòu)描述文檔模型示意圖;
[0039]圖4為本發(fā)明實施例提供的結(jié)構(gòu)化載體模型的示意圖;
[0040]圖5為本發(fā)明實施例提供的XML數(shù)據(jù)解析方法流程圖;
[0041]圖6-1為本發(fā)明實施例提供的關(guān)系映射載體模型中的元素關(guān)系映射載體的示意圖;
[0042]圖6-2為本發(fā)明實施例提供的關(guān)系映射載體模型中的屬性關(guān)系映射載體的示意圖;[0043]圖7為應(yīng)用圖5所示實施例,將XML結(jié)構(gòu)化數(shù)據(jù)示例映射成的元素關(guān)系映射載體和屬性關(guān)系映射載體的示意圖。
【具體實施方式】
[0044]下面結(jié)合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。
[0045]圖1為本發(fā)明實施例提供的XML數(shù)據(jù)解析裝置的組成示意圖,如圖1所示,其主要包括:需求結(jié)構(gòu)化描述單元11、數(shù)據(jù)關(guān)系映射單元12和解析單元13。其中,需求結(jié)構(gòu)化描述單元11又包括:應(yīng)用操作模塊111和結(jié)構(gòu)化描述模塊112。
[0046]圖1所示裝置可位于終端上。
[0047]以下給出本發(fā)明實施例提供的通過采用圖1所示裝置進行XML數(shù)據(jù)解析的流程。
[0048]本發(fā)明實施例提供的XML數(shù)據(jù)解析流程主要有兩大過程組成:
[0049]過程一:對終端應(yīng)用模塊的XML數(shù)據(jù)解析需求進行結(jié)構(gòu)化處理。具體地,是根據(jù)終端應(yīng)用模塊對XML數(shù)據(jù)的解析需求,建立標(biāo)準(zhǔn)的結(jié)構(gòu)化描述文檔和結(jié)構(gòu)化載體模型。
[0050]過程一可以在任何時候進行,只要終端應(yīng)用模塊產(chǎn)生了新的XML數(shù)據(jù)的解析需求,例如:當(dāng)XML數(shù)據(jù)的協(xié)議版本號發(fā)生了更新時,或者雖然XML數(shù)據(jù)的協(xié)議版本號未更新但終端應(yīng)用模塊要更新已有的XML數(shù)據(jù)解析需求時,都可以通過過程一,新創(chuàng)建結(jié)構(gòu)化描述文檔和結(jié)構(gòu)化載體模型,或者對已建立的結(jié)構(gòu)化描述文檔和結(jié)構(gòu)化載體模型進行修改。
[0051]過程二:根據(jù)過程一建立的結(jié)構(gòu)化載體模型,對Web服務(wù)器發(fā)來的XML數(shù)據(jù)進行解析。
[0052]圖2所示流程針對過程一,圖5所示流程針對過程二。
[0053]圖2為本發(fā)明實施例提供的對終端應(yīng)用模塊的XML數(shù)據(jù)解析需求進行結(jié)構(gòu)化處理的方法流程圖,如圖2所示,其具體步驟如下:
[0054]步驟201:需要解析XML的終端應(yīng)用模塊向Web服務(wù)器獲取XML數(shù)據(jù)的協(xié)議版本號,根據(jù)該協(xié)議版本號確定XML數(shù)據(jù)格式。
[0055]步驟202:終端應(yīng)用模塊根據(jù)XML數(shù)據(jù)格式確定要解析的結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及數(shù)據(jù)項描述信息。
[0056]下面是一個要解析的結(jié)構(gòu)化XML數(shù)據(jù)示例:
[0057]
<root>
<tag attr l=,att:r I —value’ attr2=’aUr2—vaiue’><subtag>subtag_value</subsubtag>
</tag>
<tag>tag2_va!ue</tag>
< ioot>
[0058]結(jié)構(gòu)解析起點,表示要解析的第一個結(jié)構(gòu)化XML數(shù)據(jù)在整個XML數(shù)據(jù)中的位置;
[0059]結(jié)構(gòu)解析數(shù)目,表示要解析的結(jié)構(gòu)化XML數(shù)據(jù)的總數(shù);
[0060]數(shù)據(jù)項描述,用于對要解析的每一結(jié)構(gòu)化XML數(shù)據(jù)中的每一項數(shù)據(jù)進行描述,包括載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題。[0061]步驟203:終端應(yīng)用模塊將要解析的結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及數(shù)據(jù)項描述信息設(shè)置到需求結(jié)構(gòu)化描述單元11的應(yīng)用操作模塊111中。
[0062]終端應(yīng)用模塊也可以根據(jù)預(yù)定義的結(jié)構(gòu)描述文檔模型,將要解析的XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及數(shù)據(jù)項描述信息,直接生成結(jié)構(gòu)描述文檔,將結(jié)構(gòu)描述文檔設(shè)置到需求結(jié)構(gòu)化描述單元11的應(yīng)用操作模塊111中。
[0063]步驟204:應(yīng)用操作模塊111根據(jù)該要解析的XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及數(shù)據(jù)項描述信息,生成結(jié)構(gòu)描述文檔。
[0064]結(jié)構(gòu)描述文檔用于描述要解析的結(jié)構(gòu)化XML數(shù)據(jù)。
[0065]圖3給出了本發(fā)明實施例提供的結(jié)構(gòu)描述文檔模型示意圖,如圖3所示,結(jié)構(gòu)描述文檔由結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及數(shù)據(jù)項描述組成。圖3中設(shè)結(jié)構(gòu)解析數(shù)目為M(M≥1 ),即要解析的結(jié)構(gòu)化XML數(shù)據(jù)的數(shù)目為M,其中,每一結(jié)構(gòu)化XML數(shù)據(jù)又由n(n≥I)個數(shù)據(jù)項組成,對應(yīng)η個數(shù)據(jù)項描述,這樣,要解析的數(shù)據(jù)項共Μ*η個。這里的數(shù)據(jù)項可能是元素,也可能是屬性。
[0066]應(yīng)用操作模塊111生成結(jié)構(gòu)描述文檔后,可根據(jù)預(yù)定義的結(jié)構(gòu)描述文檔模型,驗證該生成的結(jié)構(gòu)描述文檔的細節(jié)信息是否完整,若是,確定結(jié)構(gòu)描述文檔完成;否則,重新生成,直至驗證通過。
[0067]步驟205:應(yīng)用操作模塊111將結(jié)構(gòu)描述文檔的細節(jié)信息發(fā)送給結(jié)構(gòu)化描述模塊112。
[0068]這里,結(jié)構(gòu)描述文檔的細節(jié)信息即結(jié)構(gòu)描述文檔中的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及所有數(shù)據(jù)項描述信息。
[0069]步驟206:結(jié)構(gòu)化描述模塊112接收該結(jié)構(gòu)描述文檔的細節(jié)信息,根據(jù)預(yù)定義的結(jié)構(gòu)化載體模型,將該結(jié)構(gòu)描述文檔的細節(jié)信息填充到結(jié)構(gòu)化載體模型的結(jié)構(gòu)參考載體部分,同時建立結(jié)構(gòu)描述載體。
[0070]結(jié)構(gòu)化載體模型主要由結(jié)構(gòu)參考載體和結(jié)構(gòu)描述載體兩個部分組成。
[0071]圖4給出了本發(fā)明實施例提供的結(jié)構(gòu)化載體模型的示意圖,如圖4所示,結(jié)構(gòu)參考載體包括:結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,每個數(shù)據(jù)項參考載體包括載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題。實際上,結(jié)構(gòu)參考載體的細節(jié)部分對應(yīng)于結(jié)構(gòu)描述文檔的細節(jié)部分,其中:
[0072]結(jié)構(gòu)參考載體的結(jié)構(gòu)起點對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點;
[0073]結(jié)構(gòu)參考載體的結(jié)構(gòu)數(shù)目對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點;
[0074]結(jié)構(gòu)參考載體的數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)化描述文檔的數(shù)據(jù)項描述。
[0075]結(jié)構(gòu)描述載體用于存放解析出的結(jié)構(gòu)化XML數(shù)據(jù)。每個結(jié)構(gòu)描述載體對應(yīng)于一個邏輯上的結(jié)構(gòu)化XML數(shù)據(jù)節(jié)點,由于結(jié)構(gòu)化XML數(shù)據(jù)節(jié)點可以是多個,因此,結(jié)構(gòu)描述載體的數(shù)目也可能是多個,結(jié)構(gòu)描述載體的數(shù)目等于結(jié)構(gòu)參考載體中的結(jié)構(gòu)數(shù)目,如圖4中,結(jié)構(gòu)數(shù)目為Μ,則對應(yīng)的結(jié)構(gòu)描述載體的數(shù)目也為Μ。
[0076]單個結(jié)構(gòu)描述載體包括一組數(shù)據(jù)項描述載體,一個數(shù)據(jù)項描述載體對應(yīng)一個結(jié)構(gòu)化XML數(shù)據(jù)節(jié)點中的一個數(shù)據(jù)項。一個數(shù)據(jù)項描述載體包括數(shù)據(jù)取值以及對應(yīng)的數(shù)據(jù)項參考載體中的信息即,載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題。
[0077]需要說明的是,當(dāng)結(jié)構(gòu)化描述文檔發(fā)生了更新時,通過步驟205,應(yīng)用操作模塊Ill會將更新的結(jié)構(gòu)描述文檔的細節(jié)信息發(fā)送給結(jié)構(gòu)化描述模塊112,此時,若解析單元13正在使用結(jié)構(gòu)化描述模塊112中的結(jié)構(gòu)參考載體解析XML數(shù)據(jù),則結(jié)構(gòu)化描述模塊112在XML數(shù)據(jù)解析完畢時,再根據(jù)應(yīng)用操作模塊111發(fā)來的更新的結(jié)構(gòu)描述文檔的細節(jié)信息,更細自身的結(jié)構(gòu)參考載體。
[0078]圖5為本發(fā)明實施例提供的XML數(shù)據(jù)解析方法流程圖,如圖5所示,其具體步驟如下:
[0079]步驟501:終端應(yīng)用模塊將服務(wù)器發(fā)來的XML數(shù)據(jù)發(fā)送到數(shù)據(jù)關(guān)系映射單元12,數(shù)據(jù)關(guān)系映射單元12接收并讀取該XML數(shù)據(jù),解析XML語法,根據(jù)預(yù)定義的關(guān)系映射載體模型,將XML數(shù)據(jù)解析為元素關(guān)系映射載體和屬性關(guān)系映射載體。
[0080]關(guān)系映射載體模型包括元素關(guān)系映射載體和屬性關(guān)系映射載體兩部分。
[0081]圖6-1為本發(fā)明實施例提供的關(guān)系映射載體模型中的元素關(guān)系映射載體的示意圖,如圖6-1所示,元素關(guān)系映射載體包括:元素深度、元素標(biāo)題、元素取值、第一屬性關(guān)系、父元素關(guān)系、第一子元素關(guān)系、前項兄弟元素關(guān)系、后項兄弟元素關(guān)系。其中:
[0082]元素深度,表示元素在XML數(shù)據(jù)中的層級;
[0083]元素標(biāo)題,表示元素標(biāo)簽的名稱;
[0084]元素取值,表示元素所承載的數(shù)據(jù);
[0085]第一屬性關(guān)系,表示指向元素所包含的第一個屬性節(jié)點所對應(yīng)的屬性關(guān)系映射載體;
[0086]父元素關(guān)系,表示指向元素的父元素節(jié)點所對應(yīng)的元素關(guān)系映射載體;
[0087]第一子元素關(guān)系,表示指向該元素的第一個子元素節(jié)點所對應(yīng)的元素關(guān)系映射載體;
[0088]前項兄弟元素關(guān)系,表示指向該元素同級的前一個元素節(jié)點所對應(yīng)的元素關(guān)系映射載體;
[0089]后項兄弟元素關(guān)系,表示指向該元素同級的后一個元素節(jié)點所對應(yīng)的元素關(guān)系映射載體。
[0090]圖6-2為本發(fā)明實施例提供的關(guān)系映射載體模型中的屬性關(guān)系映射載體的示意圖,如圖6-2所示,屬性關(guān)系映射載體包括:屬性標(biāo)題、屬性取值、從屬元素關(guān)系、前項兄弟屬性關(guān)系、后項兄弟屬性關(guān)系,其中:
[0091]屬性標(biāo)題,表示屬性的名稱;
[0092]屬性取值,表示屬性承載的數(shù)據(jù);
[0093]從屬元素關(guān)系,表示屬性所從屬的元素節(jié)點所對應(yīng)的元素關(guān)系映射載體;
[0094]前項兄弟屬性關(guān)系,表示指向?qū)傩缘那耙粋€屬性節(jié)點所對應(yīng)的屬性關(guān)系映射載體;
[0095]后項兄弟屬性關(guān)系,表示指向該屬性的后一個屬性節(jié)點所對應(yīng)的屬性關(guān)系映射載體。
[0096]通過對XML數(shù)據(jù)進行語法分析,可以得到每一個元素節(jié)點和每一個屬性節(jié)點的細節(jié),包括承載數(shù)據(jù)、位置以及節(jié)點之間的關(guān)系,關(guān)系又包括從屬關(guān)系和同級關(guān)系。關(guān)系映射載體模型通過描述這些細節(jié),給后續(xù)遍歷結(jié)構(gòu)化XML數(shù)據(jù)提供依據(jù)。
[0097]步驟502:數(shù)據(jù)關(guān)系映射單元12將關(guān)系映射載體模型發(fā)送給解析單元13。[0098]步驟503:解析單元13根據(jù)結(jié)構(gòu)化描述模塊112建立的結(jié)構(gòu)化載體模型的結(jié)構(gòu)參考載體部分,遍歷元素關(guān)系映射載體和屬性映射載體,從元素關(guān)系映射載體和屬性映射載體中抽取與各數(shù)據(jù)項參考載體匹配的XML數(shù)據(jù)取值,將抽取出的XML數(shù)據(jù)取值寫入結(jié)構(gòu)化描述模塊112建立的結(jié)構(gòu)化載體模型的結(jié)構(gòu)描述載體中。
[0099]由步驟206可知,結(jié)構(gòu)參考載體包括:結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,每個數(shù)據(jù)項參考載體包括載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題。其中,當(dāng)載體屬性標(biāo)題不為空時,最終抽取到的是屬性取值;當(dāng)載體屬性標(biāo)題為空時,最終抽取到的是元素取值。
[0100]在遍歷時,要從根元素節(jié)點開始,首先查找元素的屬性節(jié)點以及屬性節(jié)點的后項兄弟節(jié)點,然后查找元素節(jié)點的子節(jié)點,再次查找元素節(jié)點的后項兄弟節(jié)點。
[0101]具體地,在抽取需要的XML數(shù)據(jù)時,先根據(jù)結(jié)構(gòu)參考載體中的結(jié)構(gòu)起點,在關(guān)系映射載體模型中遍歷到第一個結(jié)構(gòu)化XML數(shù)據(jù)對應(yīng)的元素關(guān)系映射載體和屬性關(guān)系映射載體,然后在元素關(guān)系映射載體和屬性關(guān)系映射載體中依次查找與結(jié)構(gòu)參考載體中的數(shù)據(jù)項參考載體1~n匹配的數(shù)據(jù)項(數(shù)據(jù)項即元素節(jié)點或?qū)傩怨?jié)點),將匹配的元素節(jié)點或?qū)傩怨?jié)點的取值依次填充至第一個結(jié)構(gòu)描述載體的數(shù)據(jù)項描述載體1~n的數(shù)據(jù)項取值中,同時要將結(jié)構(gòu)參考載體中對應(yīng)的數(shù)據(jù)項參考載體1~n的內(nèi)容填充至第一個結(jié)構(gòu)描述載體的數(shù)據(jù)項描述載體fn的數(shù)據(jù)項參考載體中;然后遍歷到下一組元素關(guān)系映射載體和屬性關(guān)系映射載體,繼續(xù)查找與結(jié)構(gòu)參考載體中的數(shù)據(jù)項參考載體fn匹配的數(shù)據(jù)項,依此類推,直到匹配成功M次,即M個結(jié)構(gòu)描述載體全部填充完畢。
[0102]當(dāng)在元素關(guān)系映射載體和屬性關(guān)系映射載體中依次查找與結(jié)構(gòu)參考載體中的數(shù)據(jù)項參考載體1~n匹配的數(shù)據(jù)項(數(shù)據(jù)項即元素節(jié)點或?qū)傩怨?jié)點)時,要根據(jù)元素關(guān)系映射載體和屬性關(guān)系映射載體找到元素節(jié)點或?qū)傩怨?jié)點的父、子、兄弟節(jié)點等關(guān)系節(jié)點,將本節(jié)點和關(guān)系節(jié)點的信息與數(shù)據(jù)項參考載體中的信息一一匹配。
[0103]步驟504:解析單元13抽取完畢,將結(jié)構(gòu)化描述載體中的各結(jié)構(gòu)描述載體提供給終端應(yīng)用模塊。
[0104]圖7給出了應(yīng)用圖5所示實施例,將如下XML結(jié)構(gòu)化數(shù)據(jù)示例映射成的元素關(guān)系
映射載體和屬性關(guān)系映射載體的示意圖:
[0105]
【權(quán)利要求】
1.一種可擴展標(biāo)記語言XML數(shù)據(jù)解析方法,其特征在于,該方法包括: 終端獲取XML數(shù)據(jù)的協(xié)議標(biāo)識,根據(jù)該協(xié)議標(biāo)識確定XML數(shù)據(jù)格式;根據(jù)XML數(shù)據(jù)格式,確定需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息,其中,每個數(shù)據(jù)項的描述信息包括:載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題; 終端解析Web服務(wù)器發(fā)來的XML數(shù)據(jù)中的元素關(guān)系及屬性關(guān)系,建立元素關(guān)系映射載體和屬性關(guān)系映射載體,其中元素關(guān)系映射載體包括:元素深度、元素標(biāo)題、元素取值、第一屬性關(guān)系、父元素關(guān)系、第一子元素關(guān)系、前項兄弟元素關(guān)系、后項兄弟元素關(guān)系,屬性關(guān)系映射載體包括:屬性標(biāo)題、屬性取值、從屬元素關(guān)系、前項兄弟屬性關(guān)系、后項兄弟屬性關(guān)系; 終端根據(jù)所述結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個XML數(shù)據(jù)結(jié)構(gòu)中包含的各數(shù)據(jù)項的描述信息,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體,抽取出與所述每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息匹配的數(shù)據(jù)的取值。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法進一步包括: 當(dāng)終端發(fā)現(xiàn)XML數(shù)據(jù)協(xié)議版本更新時,或者終端發(fā)現(xiàn)自身產(chǎn)生了新的XML數(shù)據(jù)解析需求時,更新已有的結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述終端確定需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息之后進一步包括: 終端建立結(jié)構(gòu)描 述文檔,該文檔包括:結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息; 同時,終端建立結(jié)構(gòu)參考載體和結(jié)構(gòu)描述載體, 所述結(jié)構(gòu)參考載體包括:結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,其中,所述結(jié)構(gòu)起點對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述結(jié)構(gòu)數(shù)目對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)化描述文檔的數(shù)據(jù)項描述; 所述結(jié)構(gòu)描述載體的數(shù)目與所述結(jié)構(gòu)數(shù)目相同,每個結(jié)構(gòu)描述載體由至少一個數(shù)據(jù)項描述載體組成,每個數(shù)據(jù)項描述載體包括數(shù)據(jù)項取值和數(shù)據(jù)項參考載體,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)參考載體中同一位置的數(shù)據(jù)項參考載體。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述終端根據(jù)所述結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個XML數(shù)據(jù)結(jié)構(gòu)中包含的各數(shù)據(jù)項的描述信息,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體為: 終端根據(jù)結(jié)構(gòu)參考載體中的結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體; 且,所述終端抽取出與每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息匹配的數(shù)據(jù)的取值之后進一步包括: 終端將抽取出的數(shù)據(jù)的取值填充到對應(yīng)結(jié)構(gòu)描述載體的數(shù)據(jù)項描述載體的數(shù)據(jù)取值中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述終端遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體包括: 終端按照該原則:從根元素節(jié)點開始,首先查找元素的屬性節(jié)點以及屬性節(jié)點的后項兄弟節(jié)點,然后查找元素節(jié)點的子節(jié)點,再次查找元素節(jié)點的后項兄弟節(jié)點,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體。
6.一種XML數(shù)據(jù)解析裝置,其特征在于,包括: 需求結(jié)構(gòu)化描述單元:接收應(yīng)用模塊根據(jù)XML數(shù)據(jù)協(xié)議確定的需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息,其中,每個數(shù)據(jù)項的描述信息包括:載體元素深度、父元素標(biāo)題、載體元素標(biāo)題、載體屬性標(biāo)題; 數(shù)據(jù)關(guān)系映射單元:解析Web服務(wù)器發(fā)來的XML數(shù)據(jù)中的元素關(guān)系及屬性關(guān)系,建立元素關(guān)系映射載體和屬性關(guān)系映射載體,其中元素關(guān)系映射載體包括:元素深度、元素標(biāo)題、元素取值、第一屬性關(guān)系、父元素關(guān)系、第一子元素關(guān)系、前項兄弟元素關(guān)系、后項兄弟元素關(guān)系,屬性關(guān)系映射載體包括:屬性標(biāo)題、屬性取值、從屬元素關(guān)系、前項兄弟屬性關(guān)系、后項兄弟屬性關(guān)系,將元素關(guān)系映射載體和屬性關(guān)系映射載體發(fā)送給解析模塊; 解析模塊:根據(jù)需求結(jié)構(gòu)化描述單元中的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個XML數(shù)據(jù)結(jié)構(gòu)中包含的各數(shù)據(jù)項的描述信息,遍歷數(shù)據(jù)關(guān)系映射單元發(fā)來的元素關(guān)系映射載體和屬性關(guān)系映射載體,抽取出與所述每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息匹配的數(shù)據(jù)的取值。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述需求結(jié)構(gòu)化描述單元進一步包括: 接收應(yīng)用模塊發(fā)來的更新的需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述需求結(jié)構(gòu)化描述單元進一步用于, 根據(jù)需要解析的所有結(jié)構(gòu)化XML數(shù)據(jù)的結(jié)構(gòu)解析起點、結(jié)構(gòu)解析數(shù)目以及每個結(jié)構(gòu)化XML數(shù)據(jù)中包含的各數(shù)據(jù)項的描述信息生成結(jié)構(gòu)描述文檔;同時,建立結(jié)構(gòu)參考載體和結(jié)構(gòu)描述載體,所述結(jié)構(gòu)參考載體包括:結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,其中,所述結(jié)構(gòu)起點對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述結(jié)構(gòu)數(shù)目對應(yīng)結(jié)構(gòu)化描述文檔的結(jié)構(gòu)解析起點,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)化描述文檔的數(shù)據(jù)項描述;所述結(jié)構(gòu)描述載體的數(shù)目與所述結(jié)構(gòu)數(shù)目相同,每個結(jié)構(gòu)描述載體由至少一個數(shù)據(jù)項描述載體組成,每個數(shù)據(jù)項描述載體包括數(shù)據(jù)項取值和數(shù)據(jù)項參考載體,所述數(shù)據(jù)項參考載體對應(yīng)結(jié)構(gòu)參考載體中同一位置的數(shù)據(jù)項參考載體。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述解析單元進一步用于, 根據(jù)結(jié)構(gòu)參考載體中的結(jié)構(gòu)起點、結(jié)構(gòu)數(shù)目以及至少一個數(shù)據(jù)項參考載體,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體;且,將抽取出的數(shù)據(jù)取值填充到對應(yīng)結(jié)構(gòu)描述載體的數(shù)據(jù)項描述載體的數(shù)據(jù)的取值中。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述解析單元進一步用于,按照該原則:從根元素節(jié)點開始,首先查找元素的屬性節(jié)點以及屬性節(jié)點的后項兄弟節(jié)點,然后查找元素節(jié)點的子節(jié)點,再次查找元素節(jié)點的后項兄弟節(jié)點,遍歷所述元素關(guān)系映射載體和屬性關(guān)系映射載體。
【文檔編號】G06F17/30GK103902539SQ201210569961
【公開日】2014年7月2日 申請日期:2012年12月25日 優(yōu)先權(quán)日:2012年12月25日
【發(fā)明者】吳亮, 徐永, 郝剛, 陳淵深 申請人:三星電子(中國)研發(fā)中心, 三星電子株式會社