緊湊式xml解析系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及海量數(shù)據(jù)的格式化文件存儲(chǔ)及系統(tǒng)間的海量數(shù)據(jù)交互技術(shù)領(lǐng)域,特別是緊湊式XML解析系統(tǒng)。
【背景技術(shù)】
[0002]XML是一種良好的數(shù)據(jù)描述語(yǔ)言,具有強(qiáng)大的數(shù)據(jù)描述能力,同時(shí)具備自描述的特征,使得人和機(jī)器都能夠閱讀XML文檔,XML本身的技術(shù)特性以及其相關(guān)技術(shù)的標(biāo)準(zhǔn)化,使其具備著廣泛的應(yīng)用場(chǎng)景。XML是不同系統(tǒng)之間數(shù)據(jù)交換的通用格式,以XML為接口的自動(dòng)化系統(tǒng)具有良好的交互性和擴(kuò)展性,但是,XML技術(shù)本身也很復(fù)雜,處理XML將給系統(tǒng)增加相當(dāng)?shù)墓ぷ髫?fù)荷,XML的冗雜也增加了系統(tǒng)之間的網(wǎng)絡(luò)開(kāi)銷(xiāo),因此,XML技術(shù)在異常繁榮的同時(shí),也備受詬病,尤其是資源受限和高性能要求的系統(tǒng)無(wú)法承受XML的復(fù)雜性和數(shù)據(jù)冗雜O
[0003]在資源受限的系統(tǒng)中,由于網(wǎng)絡(luò)帶寬和存儲(chǔ)空間的限制,人們?cè)谑褂肵ML作為數(shù)據(jù)傳輸和存儲(chǔ)的格式時(shí),為了有效降低數(shù)據(jù)冗余,提升系統(tǒng)資源利用率,就引入了 XML壓縮技術(shù),Binary XML是XML數(shù)據(jù)緊湊的二進(jìn)制表示形式,顯著地降低了 XML數(shù)據(jù)的冗余性,但Binary XML目前存在多種規(guī)范,還沒(méi)有一種廣泛使用的,贏得普通共識(shí)的標(biāo)準(zhǔn)。
[0004]為了在系統(tǒng)中有效地應(yīng)用Binary XML技術(shù),就必須結(jié)合Binary XML技術(shù)協(xié)議,并依據(jù)這個(gè)技術(shù)協(xié)議,提供一套完整的Binary XML解析與解碼系統(tǒng),緊湊式XML解析系統(tǒng)應(yīng)運(yùn)而生。
【發(fā)明內(nèi)容】
[0005]針對(duì)上述情況,為克服現(xiàn)有技術(shù)之缺陷,本發(fā)明之目的在于提供緊湊式XML解析系統(tǒng),有效解決了數(shù)據(jù)冗余和系統(tǒng)資源利用率低的問(wèn)題。
[0006]其解決的技術(shù)方案是,包括輸入流控制器、輸出流控制器、解析器、編碼器、元素管理器和屬性管理器,所述的輸入流控制器管理外部XML文檔數(shù)據(jù)的讀取、通過(guò)CRC校驗(yàn)碼驗(yàn)證文檔數(shù)據(jù)有效性和XML系統(tǒng)的輸入緩存區(qū)的內(nèi)存管理,保證流入XML解析系統(tǒng)的XML文檔數(shù)據(jù)流為合法、有效、完整的數(shù)據(jù)信息;
所述解析器對(duì)輸入流控制器導(dǎo)入的XML數(shù)據(jù)流依據(jù)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議規(guī)則進(jìn)行反序化操作,解析器采用二叉樹(shù)與棧結(jié)合的數(shù)據(jù)結(jié)構(gòu),將XML數(shù)據(jù)流解析為具體的XML實(shí)體;
所述的元素管理器提供對(duì)XML元素結(jié)點(diǎn)查詢、添加、刪除和修改的功能,第三方系統(tǒng)可通過(guò)元素管理器方便地實(shí)現(xiàn)對(duì)XML元素結(jié)點(diǎn)的管理;
所述的屬性管理器提供對(duì)XML屬性的查詢、添加、刪除和修改功能,第三方系統(tǒng)可通過(guò)屬性管理器方便地實(shí)現(xiàn)對(duì)XML屬性結(jié)點(diǎn)的管理,同時(shí)提供屬性值的自定義功能,即私有擴(kuò)展;
所述編碼器將XML元素和屬性結(jié)點(diǎn)依據(jù)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議規(guī)則及數(shù)據(jù)結(jié)構(gòu)進(jìn)行序列化操作,并將序列化結(jié)果導(dǎo)出到輸出流控制器;
輸出流控制器負(fù)責(zé)將系統(tǒng)內(nèi)部的壓縮XML文檔數(shù)據(jù)流輸出到XML解析系統(tǒng)外部緩沖區(qū),并提供XML文檔數(shù)據(jù)流的持久化機(jī)制。
[0007]本發(fā)明基于二進(jìn)制流的壓縮存儲(chǔ)協(xié)議,對(duì)XML文檔提供壓縮存儲(chǔ)和解析功能,使用string Id代替字符串文本,有效減少了數(shù)據(jù)冗余;預(yù)知前置的文本數(shù)據(jù)長(zhǎng)度,提高了處理效率;采用UTF-8字符編碼,簡(jiǎn)化了 XML數(shù)據(jù)表述的復(fù)雜性;采用數(shù)值的變長(zhǎng)編碼,有效地節(jié)省了存儲(chǔ)空間;XML解析系統(tǒng)還具有私有擴(kuò)展性,達(dá)到了滿足特殊業(yè)務(wù)的需求;本發(fā)明已在公司服務(wù)器及客戶端計(jì)算機(jī)系統(tǒng)中應(yīng)用,服務(wù)器端通過(guò)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議對(duì)海量數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)進(jìn)行壓縮后傳輸?shù)娇蛻舳?,有效?jié)省了傳輸數(shù)據(jù)量,很好地滿足了業(yè)務(wù)需求。
【附圖說(shuō)明】
[0008]圖1為本發(fā)明的緊湊式XML解析系統(tǒng)結(jié)構(gòu)圖。
[0009]圖2為本發(fā)明的標(biāo)簽分類(lèi)、每類(lèi)標(biāo)簽的數(shù)值及其每類(lèi)標(biāo)簽對(duì)應(yīng)的ASCII碼的關(guān)系對(duì)應(yīng)表。
圖3為本發(fā)明的一個(gè)完整XML文檔內(nèi)容的頭部的組成部分。
【具體實(shí)施方式】
[0010]以下結(jié)合附圖,對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)說(shuō)明。
[0011 ] 現(xiàn)結(jié)合圖1和圖2所示,本發(fā)明緊湊式XML解析系統(tǒng),包括輸入流控制器、輸出流控制器、解析器、編碼器、元素管理器和屬性管理器,所述的輸入流控制器管理外部XML文檔數(shù)據(jù)的讀取、通過(guò)CRC校驗(yàn)碼驗(yàn)證文檔數(shù)據(jù)有效性和XML系統(tǒng)的輸入緩存區(qū)的內(nèi)存管理,保證流入XML解析系統(tǒng)的XML文檔數(shù)據(jù)流為合法、有效、完整的數(shù)據(jù)信息;
所述解析器對(duì)輸入流控制器導(dǎo)入的XML數(shù)據(jù)流依據(jù)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議規(guī)則進(jìn)行反序化操作,解析器采用二叉樹(shù)與棧結(jié)合的數(shù)據(jù)結(jié)構(gòu),將XML數(shù)據(jù)流解析為具體的XML實(shí)體;
所述的元素管理器提供對(duì)XML元素結(jié)點(diǎn)查詢、添加、刪除和修改的功能,第三方系統(tǒng)可通過(guò)元素管理器方便地實(shí)現(xiàn)對(duì)XML元素結(jié)點(diǎn)的管理;
所述的屬性管理器提供對(duì)XML屬性的查詢、添加、刪除和修改功能,第三方系統(tǒng)可通過(guò)屬性管理器方便地實(shí)現(xiàn)對(duì)XML屬性結(jié)點(diǎn)的管理,同時(shí)提供屬性值的自定義功能,即私有擴(kuò)展;
所述編碼器將XML元素和屬性結(jié)點(diǎn)依據(jù)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議規(guī)則及數(shù)據(jù)結(jié)構(gòu)進(jìn)行序列化操作,并將序列化結(jié)果導(dǎo)出到輸出流控制器;
輸出流控制器負(fù)責(zé)將系統(tǒng)內(nèi)部的壓縮XML文檔數(shù)據(jù)流輸出到XML解析系統(tǒng)外部緩沖區(qū),并提供XML文檔數(shù)據(jù)流的持久化機(jī)制。
[0012]二進(jìn)制流的壓縮存儲(chǔ)協(xié)議是XML數(shù)據(jù)緊湊的二進(jìn)制表示形式,顯著地降低了 XML數(shù)據(jù)的冗余性,使得XML數(shù)據(jù)的解析也變得容易很多,減輕了處理XML數(shù)據(jù)的系統(tǒng)的運(yùn)算工作,降低了 XML數(shù)據(jù)傳輸時(shí)所占的帶寬。
[0013]二進(jìn)制流的壓縮存儲(chǔ)協(xié)議描述,一個(gè)完整的XML文檔內(nèi)容包括頭部和主體,頭部包括魔數(shù)、頭部長(zhǎng)度、版本號(hào)和編碼控制信息,主體由一串標(biāo)簽單元構(gòu)成,標(biāo)簽“Z”是整個(gè)文檔的結(jié)束標(biāo)志,如圖3所示。
[0014]協(xié)議規(guī)范中定義了六類(lèi)標(biāo)簽,分別為文檔標(biāo)簽、聲明標(biāo)簽、元素標(biāo)簽、屬性標(biāo)簽、文本標(biāo)簽和自定義標(biāo)簽,所述六類(lèi)標(biāo)簽、每類(lèi)標(biāo)簽對(duì)應(yīng)的數(shù)值和每類(lèi)標(biāo)簽對(duì)應(yīng)的ASCII碼的
關(guān)系對(duì)應(yīng)表,如圖2所不。
[0015]本發(fā)明在實(shí)施時(shí),文檔內(nèi)容標(biāo)簽化,即相對(duì)獨(dú)立的XML文檔內(nèi)容,例如文檔元素、文檔屬性,均由一個(gè)標(biāo)簽單元來(lái)表示,也就是元素標(biāo)簽、文檔標(biāo)簽,一般地,標(biāo)簽單元包括標(biāo)簽本身、數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)值,即TLV ;
使用string Id代替字符串文本,即把在XML文檔中重復(fù)出現(xiàn)的元素和屬性名稱字符串,以一個(gè)數(shù)值Id進(jìn)行替換,可以有效減少數(shù)據(jù)冗余;
預(yù)知前置的文本數(shù)據(jù)長(zhǎng)度,即文本數(shù)據(jù)的長(zhǎng)度信息總是出現(xiàn)在文本之前,這樣可以提前預(yù)知需要處理的數(shù)據(jù)有多大,需要分配多少存儲(chǔ)空間,可以作整體拷貝,從而提高了處理效率;
使用UTF-8字符編碼,即所有非數(shù)值字符都使用UTF-8編碼,避免了 XML數(shù)據(jù)在不同系統(tǒng)間發(fā)送和接收時(shí),可能發(fā)生的代碼頁(yè)轉(zhuǎn)換,從而簡(jiǎn)化了 XML數(shù)據(jù)表示的復(fù)雜性;
采用大端字節(jié)序,即多字節(jié)的字符和數(shù)值都采用大端字節(jié)序的編碼方式,更適合網(wǎng)絡(luò)傳輸,消除了不必要的網(wǎng)絡(luò)字節(jié)序變換,降低了數(shù)據(jù)通訊的潛在復(fù)雜性;
數(shù)值的變長(zhǎng)編碼,即對(duì)于取值范圍很大的數(shù)值和取值范圍很小的數(shù)值,都采用變長(zhǎng)編碼的方式來(lái)表示,有效地節(jié)省了存儲(chǔ)空間;
私有擴(kuò)展性,即用戶可以定義私有的標(biāo)簽,擴(kuò)展了 XML信息的表述能力,以達(dá)到滿足特殊業(yè)務(wù)的需求。
[0016]本發(fā)明基于二進(jìn)制流的壓縮存儲(chǔ)協(xié)議,對(duì)XML文檔提供壓縮存儲(chǔ)和解析功能、從原始XML文檔到壓縮式XML文檔的轉(zhuǎn)換功能和從壓縮式XML文檔到二叉樹(shù)與棧結(jié)合的數(shù)據(jù)結(jié)構(gòu)解析功能,并對(duì)文檔內(nèi)容標(biāo)簽化,使用編號(hào)代替重復(fù)的字符串信息,同時(shí)提供自定義屬性值的私有擴(kuò)展,達(dá)到了特殊業(yè)務(wù)的需求。
[0017]本發(fā)明已在公司服務(wù)器及客戶端計(jì)算機(jī)系統(tǒng)中應(yīng)用,服務(wù)器端通過(guò)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議對(duì)海量數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)進(jìn)行壓縮后傳輸?shù)娇蛻舳?,有效?jié)省了傳輸數(shù)據(jù)量,很好地滿足了業(yè)務(wù)需求。
【主權(quán)項(xiàng)】
1.緊湊式XML解析系統(tǒng),包括輸入流控制器、輸出流控制器、解析器、編碼器、元素管理器和屬性管理器,其特征在于,所述的輸入流控制器管理外部XML文檔數(shù)據(jù)的讀取、通過(guò)CRC校驗(yàn)碼驗(yàn)證文檔數(shù)據(jù)有效性和XML系統(tǒng)的輸入緩存區(qū)的內(nèi)存管理,保證流入XML解析系統(tǒng)的XML文檔數(shù)據(jù)流為合法、有效、完整的數(shù)據(jù)信息; 所述解析器對(duì)輸入流控制器導(dǎo)入的XML數(shù)據(jù)流依據(jù)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議規(guī)則進(jìn)行反序化操作,解析器采用二叉樹(shù)與棧結(jié)合的數(shù)據(jù)結(jié)構(gòu),將XML數(shù)據(jù)流解析為具體的XML實(shí)體; 所述的元素管理器提供對(duì)XML元素結(jié)點(diǎn)查詢、添加、刪除和修改的功能,第三方系統(tǒng)可通過(guò)元素管理器方便地實(shí)現(xiàn)對(duì)XML元素結(jié)點(diǎn)的管理; 所述的屬性管理器提供對(duì)XML屬性的查詢、添加、刪除和修改功能,第三方系統(tǒng)可通過(guò)屬性管理器方便地實(shí)現(xiàn)對(duì)XML屬性結(jié)點(diǎn)的管理,同時(shí)提供屬性值的自定義功能,即私有擴(kuò)展; 所述編碼器將XML元素和屬性結(jié)點(diǎn)依據(jù)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議規(guī)則及數(shù)據(jù)結(jié)構(gòu)進(jìn)行序列化操作,并將序列化結(jié)果導(dǎo)出到輸出流控制器; 輸出流控制器負(fù)責(zé)將系統(tǒng)內(nèi)部的壓縮XML文檔數(shù)據(jù)流輸出到XML解析系統(tǒng)外部緩沖區(qū),并提供XML文檔數(shù)據(jù)流的持久化機(jī)制。2.根據(jù)權(quán)利要求1所述的緊湊式XML解析系統(tǒng),其特征在于,二進(jìn)制流的壓縮存儲(chǔ)協(xié)議是XML數(shù)據(jù)緊湊的二進(jìn)制表示形式。
【專(zhuān)利摘要】本發(fā)明提供緊湊式XML解析系統(tǒng),有效解決了數(shù)據(jù)冗余和系統(tǒng)資源利用率低的問(wèn)題;其方案是,包括輸入流控制器、輸出流控制器、解析器、編碼器、元素管理器和屬性管理器,所述的輸入流控制器管理外部XML文檔數(shù)據(jù)的讀取、通過(guò)CRC校驗(yàn)碼驗(yàn)證文檔數(shù)據(jù)有效性和XML系統(tǒng)的輸入緩存區(qū)的內(nèi)存管理,保證流入XML解析系統(tǒng)的XML文檔數(shù)據(jù)流為合法、有效、完整的數(shù)據(jù)信息;本發(fā)明已在公司服務(wù)器及客戶端計(jì)算機(jī)系統(tǒng)中應(yīng)用,服務(wù)器端通過(guò)二進(jìn)制流的壓縮存儲(chǔ)協(xié)議對(duì)海量數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)進(jìn)行壓縮后傳輸?shù)娇蛻舳?,有效?jié)省了傳輸數(shù)據(jù)量,很好地滿足了業(yè)務(wù)需求。
【IPC分類(lèi)】G06F17/30
【公開(kāi)號(hào)】CN105183750
【申請(qǐng)?zhí)枴緾N201510408884
【發(fā)明人】趙全奇, 高峰
【申請(qǐng)人】河南藍(lán)信科技股份有限公司
【公開(kāi)日】2015年12月23日
【申請(qǐng)日】2015年7月14日