亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法和系統(tǒng)的制作方法

文檔序號:6525110閱讀:175來源:國知局
一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法和系統(tǒng),其中,包括步驟:采用xml格式對數(shù)據(jù)的結(jié)構(gòu)進(jìn)行描述,所述數(shù)據(jù)描述后包括字段名和預(yù)設(shè)長度的字段值及字段的起始位置信息;在進(jìn)行序列化時,根據(jù)xml描述信息,將數(shù)據(jù)各字段值設(shè)置到指定位置,在設(shè)置完畢后得到數(shù)據(jù)的二進(jìn)制流;在進(jìn)行反序列化時,根據(jù)xml描述信息,利用數(shù)據(jù)的各字段名從二進(jìn)制流中讀取相應(yīng)字段值。本發(fā)明采用通用化的設(shè)計,對二進(jìn)制數(shù)據(jù)流進(jìn)行反序列化,或者將數(shù)據(jù)序列化成二進(jìn)制數(shù)據(jù)流,本發(fā)明的方法使得CS架構(gòu)系統(tǒng)中的數(shù)據(jù)維護(hù)更加簡便,即使修改某一數(shù)據(jù)結(jié)構(gòu),也無需對整個系統(tǒng)進(jìn)行重新編譯,同時也減少了不必要的網(wǎng)絡(luò)流量。
【專利說明】一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信【技術(shù)領(lǐng)域】,尤其涉及一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法和系統(tǒng)。
【背景技術(shù)】
[0002]在CS架構(gòu)的系統(tǒng)中,客戶端與服務(wù)端之間的通訊,需要兩端協(xié)商并定義消息的格式;在一些獨立的應(yīng)用程序中,根據(jù)業(yè)務(wù)需要也須定義數(shù)據(jù)格式;在C、C++開發(fā)的系統(tǒng)中,這些消息或者數(shù)據(jù)一般采用數(shù)據(jù)結(jié)構(gòu)(Struct)來定義,這些數(shù)據(jù)結(jié)構(gòu)的定義,通常會放在一個頭文件中,以便被引用。但是對于一個比較復(fù)雜CS架構(gòu)的系統(tǒng),消息或數(shù)據(jù)比較多,隨之而來的是,需要定義很多數(shù)據(jù)結(jié)構(gòu),維護(hù)起來相當(dāng)困難,而且一旦修改其中的某一個數(shù)據(jù)結(jié)構(gòu),則整個系統(tǒng)都需要重新編譯,所以現(xiàn)有使用數(shù)據(jù)結(jié)構(gòu)定義的網(wǎng)絡(luò)通信的數(shù)據(jù)交換方法效率較低。
[0003]有些CS架構(gòu)的系統(tǒng)采用xml、json的格式來傳輸數(shù)據(jù),雖然這種方式使用起來較方便,數(shù)據(jù)格式也比較清晰,但是由于上述傳輸方式傳輸?shù)氖亲址蛿?shù)據(jù),數(shù)據(jù)量大,在通訊時帶來不必要的網(wǎng)絡(luò)流量。
[0004]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。

【發(fā)明內(nèi)容】

[0005]鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法和系統(tǒng),旨在解決現(xiàn)有的數(shù)據(jù)傳輸方式維護(hù)不方便、效率低、流量大的問題。
[0006]本發(fā)明的技術(shù)方案如下:
一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其中,包括步驟:
采用xml文件對數(shù)據(jù)的結(jié)構(gòu)進(jìn)行描述,所述數(shù)據(jù)描述后包括字段名和預(yù)設(shè)長度的字段值及字段的起始位置信息;
在進(jìn)行序列化時,根據(jù)xml描述信息,將數(shù)據(jù)各字段值設(shè)置到指定位置,在設(shè)置完畢后得到數(shù)據(jù)的二進(jìn)制流;
在進(jìn)行反序列化時,根據(jù)xml描述信息,利用數(shù)據(jù)的各字段名從二進(jìn)制流中讀取相應(yīng)字段值。
[0007]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其中,采用xml文件對數(shù)據(jù)進(jìn)行描述的步驟具體包括:
對數(shù)據(jù)的名稱、類型、長度及位置分別描述。
[0008]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其中,當(dāng)數(shù)據(jù)類型為char時,其長度為I字節(jié),當(dāng)數(shù)據(jù)類型為short時,其長度為2字節(jié),當(dāng)數(shù)據(jù)類型為int時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為long時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為float時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為double時,其長度為8字節(jié),當(dāng)數(shù)據(jù)類型為string時,其長度不定。
[0009]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其中,序列化的步驟具體包括: B1、解析xml,加載數(shù)據(jù)的xml描述信息,獲取數(shù)據(jù)的ID ;
B2、根據(jù)數(shù)據(jù)的ID以及xml描述信息,確定數(shù)據(jù)的大小,根據(jù)該大小申請數(shù)據(jù)的內(nèi)存;B3、根據(jù)xml描述信息中的各字段名對應(yīng)的數(shù)據(jù)長度及位置信息,設(shè)置相應(yīng)字段值到所述內(nèi)存中得到數(shù)據(jù)的二進(jìn)制流。
[0010]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其中,反序列化的步驟具體包括:
Cl、解析xml,加載數(shù)據(jù)的xml描述信息,從二進(jìn)制流的開頭讀取數(shù)據(jù)的ID ;
C2、根據(jù)xml描述信息中的各字段名對應(yīng)的數(shù)據(jù)大小,獲取相應(yīng)字段值在二進(jìn)制流中的開始位置以及結(jié)束位置的信息;
C3、根據(jù)字段開始位置以及結(jié)束位置的信息讀取字段值,并結(jié)合相應(yīng)字段名還原出原始數(shù)據(jù)。
[0011]一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其中,包括:
描述模塊,用于采用xml文件對數(shù)據(jù)的結(jié)構(gòu)進(jìn)行描述,所述數(shù)據(jù)描述后包括字段名和預(yù)設(shè)長度的字段值及字段的起始位置信息;
序列化模塊,用于在進(jìn)行序列化時,根據(jù)xml描述信息,將數(shù)據(jù)各字段值設(shè)置到指定位置,在設(shè)置完畢后得到數(shù)據(jù)的二進(jìn)制流;
反序列化模塊,用于在進(jìn)行反序列化時,根據(jù)xml描述信息,利用數(shù)據(jù)的各字段名從二進(jìn)制流中讀取相應(yīng)字段值。
[0012]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其中,所述描述模塊用于對數(shù)據(jù)的名稱、類型、長度及位置分別描述。
[0013]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其中,所述序列化模塊具體包括: 數(shù)據(jù)ID獲取單元,用于解析xml,加載數(shù)據(jù)的xml描述信息,獲取數(shù)據(jù)的ID ;
內(nèi)存申請單元,用于根據(jù)數(shù)據(jù)的ID以及xml描述信息,確定數(shù)據(jù)的大小,根據(jù)該大小申請數(shù)據(jù)的內(nèi)存;
字段值設(shè)置單元,用于根據(jù)xml描述信息中的各字段名相應(yīng)的數(shù)據(jù)長度及位置信息,設(shè)置相應(yīng)字段值到所述內(nèi)存中得到數(shù)據(jù)的二進(jìn)制流。
[0014]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其中,所述反序列化模塊具體包括: 數(shù)據(jù)ID讀取單元,用于解析xml,加載數(shù)據(jù)的xml描述信息,從二進(jìn)制流的開頭讀取數(shù)
據(jù)的ID ;
位置信息獲取單元,用于根據(jù)xml描述信息中的各字段名對應(yīng)的數(shù)據(jù)大小,獲取相應(yīng)字段值在二進(jìn)制流中的開始位置以及結(jié)束位置的信息;
字段值讀取單元,用于根據(jù)字段開始位置以及結(jié)束位置的信息讀取字段值,并結(jié)合相應(yīng)字段名還原出原始數(shù)據(jù)。
[0015]所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其中,當(dāng)數(shù)據(jù)類型為char時,其長度為I字節(jié),當(dāng)數(shù)據(jù)類型為short時,其長度為2字節(jié),當(dāng)數(shù)據(jù)類型為int時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為long時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為float時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為double時,其長度為8字節(jié),當(dāng)數(shù)據(jù)類型為string時,其長度不定。
[0016]有益效果:本發(fā)明針對CS架構(gòu)中客戶端與服務(wù)端之間交換的數(shù)據(jù),進(jìn)行通用化的設(shè)計,采用xml對數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述,根據(jù)xml的描述信息,對數(shù)據(jù)進(jìn)行序列化與反序列化,達(dá)到通過xml描述,即可對二進(jìn)制數(shù)據(jù)流進(jìn)行反序列化,或者將數(shù)據(jù)序列化成二進(jìn)制數(shù)據(jù)流,本發(fā)明的方法使得CS架構(gòu)系統(tǒng)中的數(shù)據(jù)維護(hù)更加簡便,即使修改某一數(shù)據(jù)結(jié)構(gòu),也無需對整個系統(tǒng)進(jìn)行重新編譯,同時也減少了不必要的網(wǎng)絡(luò)流量。
【專利附圖】

【附圖說明】
[0017]圖1為本發(fā)明一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法較佳實施例的流程圖。
[0018]圖2為數(shù)據(jù)的二進(jìn)制流的結(jié)構(gòu)示意圖。
[0019]圖3為利用本發(fā)明的方法對數(shù)據(jù)進(jìn)行xml描述后的數(shù)據(jù)塊的結(jié)構(gòu)示意圖。
[0020]圖4為圖1所示方法中步驟S102的具體流程圖。
[0021]圖5為圖1所示方法中步驟S103的具體流程圖。
[0022]圖6為本發(fā)明一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng)較佳實施例的結(jié)構(gòu)框圖。
[0023]圖7為圖6所示系統(tǒng)中序列化模塊的具體結(jié)構(gòu)框圖。
[0024]圖8為圖6所示系統(tǒng)中反序列化模塊的具體結(jié)構(gòu)框圖。
【具體實施方式】
[0025]本發(fā)明提供一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法和系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0026]請參閱圖1,圖1為本發(fā)明一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法較佳實施例的流程圖,如圖所示,其包括步驟:
5101、采用xml格式對數(shù)據(jù)的結(jié)構(gòu)進(jìn)行描述,所述數(shù)據(jù)描述后包括字段名和預(yù)設(shè)長度的字段值及字段的起始位置信息;
5102、在進(jìn)行序列化時,根據(jù)xml描述信息,將數(shù)據(jù)各字段值設(shè)置到指定位置,在設(shè)置完畢后得到數(shù)據(jù)的二進(jìn)制流;
5103、在進(jìn)行反序列化時,根據(jù)xml描述信息,利用數(shù)據(jù)的各字段名從二進(jìn)制流中讀取相應(yīng)字段值。
[0027]在步驟SlOl中,首先采用xml格式的文件對數(shù)據(jù)的結(jié)構(gòu)進(jìn)行描述。在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)都是二進(jìn)制流的數(shù)據(jù),如圖2所示,其由兩部分組成,每個數(shù)據(jù)都有系統(tǒng)全局唯一的標(biāo)識(ID),Data是真正的數(shù)據(jù)部分,Data部分的數(shù)據(jù)格式,可由xml文件來進(jìn)行描述。本實施例中的描述方法中,對數(shù)據(jù)的名稱、類型、長度及位置分別進(jìn)行了描述。例如一條登陸消息包含了登陸的用戶名、密碼、客戶端當(dāng)前版本號,那么可采用如下的xml進(jìn)行描述:
〈DataField name=〃login〃 id=〃1000〃 description=〃user login〃>
〈Field name=〃version〃 type=〃char〃 description=^system version〃/>
〈Field name=〃user name^ type=〃string〃 length=〃32〃/>
〈Field name=〃password〃 type=〃string〃 length=〃32〃/>
〈/DataField〉
在上述xml格式的文件描述了一條名為“l(fā)ogin”的消息,其ID為1000,其數(shù)據(jù)格式中包含了三個字段:version、user name、password,這三個字段的信息分別為:version:類型為char,長度為I字節(jié),在數(shù)據(jù)的第I個字節(jié)。
[0028]user name:類型為string,長度為32字節(jié),在數(shù)據(jù)的第2~33字節(jié)。[0029]password:類型為string,長度為32字節(jié),在數(shù)據(jù)的第34~65字節(jié)。
[0030]即通過上述xml文件描述了數(shù)據(jù)的名稱、類型、長度、以及位置的信息。
[0031]整個數(shù)據(jù)塊的結(jié)構(gòu),如圖3所示,ID在前,之后是version (客戶端版本號),其長度為I字節(jié),然后是user name (用戶名),其長度為32字節(jié),再是password (密碼),其長度為32字節(jié)。
[0032]而如果采用C/C++語言中的struct來表示數(shù)據(jù)的Data部分,其定義如下:
【權(quán)利要求】
1.一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其特征在于,包括步驟: 采用xml文件對數(shù)據(jù)的結(jié)構(gòu)進(jìn)行描述,所述數(shù)據(jù)描述后包括字段名和預(yù)設(shè)長度的字段值及字段的起始位置信息; 在進(jìn)行序列化時,根據(jù)xml描述信息,將數(shù)據(jù)各字段值設(shè)置到指定位置,在設(shè)置完畢后得到數(shù)據(jù)的二進(jìn)制流; 在進(jìn)行反序列化時,根據(jù)xml描述信息,利用數(shù)據(jù)的各字段名從二進(jìn)制流中讀取相應(yīng)字段值。
2.根據(jù)權(quán)利要求1所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其特征在于,采用xml文件對數(shù)據(jù)進(jìn)行描述的步驟具體包括: 對數(shù)據(jù)的名稱、類型、長度及位置分別描述。
3.根據(jù)權(quán)利要求2所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其特征在于,當(dāng)數(shù)據(jù)類型為char時,其長度為I字節(jié),當(dāng)數(shù)據(jù)類型為short時,其長度為2字節(jié),當(dāng)數(shù)據(jù)類型為int時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為long時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為float時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為double時,其長度為8字節(jié),當(dāng)數(shù)據(jù)類型為string時,其長度不定。
4.根據(jù)權(quán)利要求2所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其特征在于,序列化的步驟具體包括: B1、解析xml,加載數(shù)據(jù)的xml描述信息,獲取數(shù)據(jù)的ID ; B2、根據(jù)數(shù)據(jù)的ID以及xml描述信息,確定數(shù)據(jù)的大小,根據(jù)該大小申請數(shù)據(jù)的內(nèi)存;B3、根據(jù)xml描述信息中的各字段名對應(yīng)的數(shù)據(jù)長度及位置信息,設(shè)置相應(yīng)字段值到所述內(nèi)存中得到數(shù)據(jù)的二進(jìn)制流。
5.根據(jù)權(quán)利要求2所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的方法,其特征在于,反序列化的步驟具體包括: Cl、解析xml,加載數(shù)據(jù)的xml描述信息,從二進(jìn)制流的開頭讀取數(shù)據(jù)的ID ; C2、根據(jù)xml描述信息中的各字段名對應(yīng)的數(shù)據(jù)大小,獲取相應(yīng)字段值在二進(jìn)制流中的開始位置以及結(jié)束位置的信息; C3、根據(jù)字段開始位置以及結(jié)束位置的信息讀取字段值,并結(jié)合相應(yīng)字段名還原出原始數(shù)據(jù)。
6.一種利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其特征在于,包括: 描述模塊,用于采用xml文件對數(shù)據(jù)的結(jié)構(gòu)進(jìn)行描述,所述數(shù)據(jù)描述后包括字段名和預(yù)設(shè)長度的字段值及字段的起始位置信息; 序列化模塊,用于在進(jìn)行序列化時,根據(jù)xml描述信息,將數(shù)據(jù)各字段值設(shè)置到指定位置,在設(shè)置完畢后得到數(shù)據(jù)的二進(jìn)制流; 反序列化模塊,用于在進(jìn)行反序列化時,根據(jù)xml描述信息,利用數(shù)據(jù)的各字段名從二進(jìn)制流中讀取相應(yīng)字段值。
7.根據(jù)權(quán)利要求6所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其特征在于,所述描述模塊用于對數(shù)據(jù)的名稱、類型、長度及位置分別描述。
8.根據(jù)權(quán)利要求7所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其特征在于,所述序列化模塊具體包括:數(shù)據(jù)ID獲取單元,用于解析xml,加載數(shù)據(jù)的xml描述信息,獲取數(shù)據(jù)的ID ; 內(nèi)存申請單元,用于根據(jù)數(shù)據(jù)的ID以及xml描述信息,確定數(shù)據(jù)的大小,根據(jù)該大小申請數(shù)據(jù)的內(nèi)存; 字段值設(shè)置單元,用于根據(jù)xml描述信息中的各字段名相應(yīng)的數(shù)據(jù)長度及位置信息,設(shè)置相應(yīng)字段值到所述內(nèi)存中得到數(shù)據(jù)的二進(jìn)制流。
9.根據(jù)權(quán)利要求7所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其特征在于,所述反序列化模塊具體包括: 數(shù)據(jù)ID讀取單元,用于解析xml,加載數(shù)據(jù)的xml描述信息,從二進(jìn)制流的開頭讀取數(shù)據(jù)的ID ; 位置信息獲取單元,用于根據(jù)xml描述信息中的各字段名對應(yīng)的數(shù)據(jù)大小,獲取相應(yīng)字段值在二進(jìn)制流中的開始位置以及結(jié)束位置的信息; 字段值讀取單元,用于根據(jù)字段開始位置以及結(jié)束位置的信息讀取字段值,并結(jié)合相應(yīng)字段名還原出原始數(shù)據(jù)。
10.根據(jù)權(quán)利要求7所述的利用xml實現(xiàn)通用化數(shù)據(jù)交換的系統(tǒng),其特征在于,當(dāng)數(shù)據(jù)類型為char時,其長度為I字節(jié),當(dāng)數(shù)據(jù)類型為short時,其長度為2字節(jié),當(dāng)數(shù)據(jù)類型為int時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為long時,其長度為4字節(jié),當(dāng)數(shù)據(jù)類型為float時,其長度 為4字節(jié),當(dāng)數(shù)據(jù)類型為double時,其長度為8字節(jié),當(dāng)數(shù)據(jù)類型為string時,其長度不定。
【文檔編號】G06F17/30GK103699633SQ201310716493
【公開日】2014年4月2日 申請日期:2013年12月23日 優(yōu)先權(quán)日:2013年12月23日
【發(fā)明者】朱錦華 申請人:Tcl集團(tuán)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1