• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    通用的對象序列化的實現方法技術

    技術編號:8532520 閱讀:198 留言:0更新日期:2013-04-04 15:20
    本發明專利技術公開了一種通用的對象序列化的實現方法;包括對象序列化成XML文本內容以及序列化之后的XML文本內容還原成對象。本發明專利技術可以使用XML格式表示對象的序列化數據,可讀性強,方便編輯。

    【技術實現步驟摘要】
    通用的對象序列化的實現方法
    本專利技術屬于軟件開發和算法領域。
    技術介紹
    對象序列化技術,是將對象數據轉換成另一種持久化數據形式的技術,轉換之后的數據形式必須易于存儲在外部介質上,或者易于使用網絡進行傳輸。為了使得存儲和傳輸后的數據能夠再次變回內存中的對象,這樣的轉換必須是可逆的。對象序列化技術在數據的傳輸和存儲過程中,引入了對象的抽象,使得這個過程更加直觀,使用更加方便,因此對象序列化技術在面向對象的軟件系統中使用非常廣泛。由于對象序列化技術使用的廣泛性,很多的計算機語言都在語言層面,通過標準庫的方式,提供對象序列化的功能的支持,Java,C#,Python等等語言莫不如是。C++語言本身并沒有在標準庫中提供對象序列化的功能,如果需要使用C++語言實現對象序列化,開發者要么自己設計,要么使用第三方庫。目前C++中使用比較廣泛的對象序列化庫包括MFC,boost::serialization等等。MFC庫的對象序列化功能無法脫離MFC庫單獨使用,不具有可移植性,大大限制了它的適用范圍,而且MFC庫將對象序列化成二進制數據,不具有可讀性,也無法進行手工編輯。另外,MFC庫是一個相對古老的設計,用戶需要定義很多宏,本身的使用不是很方便。boost::serialization庫參照了MFC庫序列化功能的實現,它同時改進了前者的很多缺點。它支持將對象序列化成字符串,寫入XML文件,這使得手工編輯變的方便。但是它不支持對文件的加密功能。不管是MFC庫,還是boost::serialization庫,都僅僅是實現了對象的序列化功能,開發人員如如要使用這些庫,必須自己去設計對象具體的外部表現形式。本專利技術提供了一個通用的對象序列化方法,并提供了支持這個方法的庫的實現方法,開發人員可以方便的使用這個序列化方法和庫,輕松的實現復雜的序列化功能。
    技術實現思路
    本專利技術所要解決的技術問題是提供一種通用的對象序列化的實現方法,它可以使用XML格式表示對象的序列化數據,可讀性強,方便編輯。為了解決以上技術問題,本專利技術提供了一種通用的對象序列化的實現方法;包括對象序列化成XML文本內容以及序列化之后的XML文本內容還原成對象。本專利技術的有益效果在于:可以使用XML格式表示對象的序列化數據,可讀性強,方便編輯。對象序列化成XML文本內容包括以下步驟:將對象存放于對象倉庫中;調用對象,構建對象結構樹;序列化管理器將前序遍歷對象結構樹,對結構樹的每個節點進行序列化操作,生成XML格式的字符串;將XML字符串存儲到XML文件中或者通過網絡發送。序列化之后的XML文本內容,還原成對象包括以下步驟:讀取XML字符串;根據XML字符串,構建對象結構樹;序列化管理器使用前序遍歷的方式遍歷對象結構樹,根據模板對象,動態生成對象;序列化管理器使用后續遍歷的方式遍歷對象結構樹,填充對象數據;序列化管理器使用后續遍歷的方式遍歷對象結構樹,初始化對象數據;注冊動態生成的對象到對象倉庫。附圖說明下面結合附圖和具體實施方式對本專利技術作進一步詳細說明。圖1描述了將C++語言中的對象序列化成XML文本內容的過程;圖2描述了序列化之后的XML文本內容,還原成C++對象的過程。具體實施方式本專利技術解決現有的C++語言對象序列化庫只提供序列化功能,而沒有序列化方法的問題。本專利技術的序列化方法使用XML標記語言來作為對象的外部表示。對象的數據有屬性和關聯兩種,不管是屬性還是關聯,都是對象的成員變量。對象的屬性是指類型為方法所支持基本類型(下文會詳細說明)的成員變量;對象的關聯是指類型為某個C++類的成員變量,這個C++類也必須是可序列化的。對象的關聯又分為兩種,普通關聯和引用關聯。普通關聯指成員變量的類型為類本身,引用關聯指成員變量的類型為類指針。序列化方法除了支持單個的屬性和關聯以外,還支持屬性列表和關聯列表,以及屬性字典和關聯字典。關聯列表和關聯字典都是關聯的容器,其中的元素既可以是普通關聯,也可以是引用關聯。關聯字典的鍵值,必須是序列化方法所支持的基本類型中的一種。下面的表格說明了序列化方法的詳細內容:序列化方法所支持的基本類型,就是屬性所能使用的基本類型。基本類型在方法中定義了相應的字符串來表示,這些字符串可以出現在<attribute>元素的的“type”屬性中,以及<attribute_map>元素和<association_map>元素的”key_type”屬性中。關于基本類型的詳細內容請參見下表:在支持該序列化方法的序列化庫中,使用ISerialize接口表示可以被序列化和反序列化的對象,所有想使用序列化方法和序列化功能的對象都必須繼承這個接口。繼承了這個接口的對象將滿足以下幾個要求:1.擁有一個CName類型的名稱,作為對象的標識符;2.擁有一個參數為CProtoType類型的構造函數,用于構造模板對象;3.擁有一個make()函數,用于動態創建新對象;4.擁有一個setObjectDefinition()方法,用于填充數據到CObjectDefinition對象;5.擁有一個getObjectDefinition()方法,用于從CObjectDefinition對象取得數據;6.擁有一個initialize()方法,用于在填充數據完成后,進行對象的初始化。序列化庫將包括以下兩個重要的部分:對象倉庫和序列化管理器。對象倉庫保存著對象的名稱(CName類型)到對象本身的映射,使用對象倉庫存儲對象主要是為了支持引用關聯。序列化管理器負責具體的序列化操作,同時存儲著類型名到模板對象的映射,模板對象是為了在進行反序列的過程中,動態創建對象之用。序列化庫使用以下的一組對象來描述一個C++對象的數據:1.CAttribute對象表示對象的屬性;2.CAttributeList對象表示對象的屬性列表;3.CAttributeMap對象表示對象的屬性字典;4.CAssociation對象表示對象的關聯;5.CAssociationList對象表示對象的關聯列表;6.CAssociationMap對象表示對象的關聯字典;7.CObjectDefinition表示對象本身。在序列化的過程中,任何一個需要進行序列化的C++對象,都可以轉換成以上對象組成的一顆結構樹。反之,在反序列化的過程中,XML字符串也將轉換成結構樹,進而再通過動態創建,還原成真正的C++對象。以上對象組成的結構樹,是序列化和反序列化過程中的中間數據,也是整個序列化算法的核心。為了通過結構樹創建C++對象或者XML元素,序列化庫使用前序遍歷的方式遍歷結構樹,而為了將結構樹中CObjectDefinition的數據填充到C++對象中去,進而對對象進行初始化,序列化庫使用后序遍歷的方式遍歷結構樹,以保證對象成員的數據在對象之前被準備好。提供了一個成熟的易于使用的序列化方法。序列化方法使用XML格式表示對象的序列化數據,可讀性強,方便編輯。本專利技術并不限于上文討論的實施方式。以上對具體實施方式的描述旨在于為了描述和說明本專利技術涉及的技術方案。基于本專利技術啟示的顯而易見的變換或替代也應當被認為落入本專利技術的保護范圍。以上的具體實施方式用來揭示本專利技術的最佳實施方法,以使得本領域的普通技術人本文檔來自技高網
    ...
    通用的對象序列化的實現方法

    【技術保護點】
    一種通用的對象序列化的實現方法;其特征在于,包括對象序列化成XML文本內容以及序列化之后的XML文本內容還原成對象。

    【技術特征摘要】
    1.一種通用的對象序列化的實現方法;其特征在于,包括對象序列化成XML文本內容以及序列化之后的XML文本內容還原成對象;XML標記語言作為對象的外部表示,對象數據有屬性和關聯兩種,屬性和關聯都是對象的成員變量;對象的關聯分為普通關聯和引用關聯,普通關聯指成員變量的類型為類本身,引用關聯指成員變量的類型為類指針;在支持通用的對象序列化的實現方法的序列化庫中使用ISerialize接口表示可以被序列化和反序列化的對象;所述序列化庫包括對象倉庫和序列化管理器;對象倉庫保存著對象的名稱到對象本身的映射,使用對象倉庫存儲對象來支持引用關聯;序列化管理器負責具體的序列化操作,同時存儲著類型名到模板對象的映射,模板對象用于在進行反序列的過程中動態創建對象;對象序列化成XML文本內容包括以下步驟:將對象存放于對象倉庫中;調用對象,構建對象結構樹;序列化管理器將前序遍歷對象結構樹,對對象結構樹的每個節點進行序列化操作,生成XML格式的字符串;...

    【專利技術屬性】
    技術研發人員:朱建云鞏榮海
    申請(專利權)人:上海富欣智能交通控制有限公司
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 久久久久久av无码免费看大片| 免费无码一区二区三区蜜桃大| 暴力强奷在线播放无码| 韩国19禁无遮挡啪啪无码网站| 无码人妻精品一区二区三区66 | 无码AV动漫精品一区二区免费| 亚洲人成人无码网www国产| 久久亚洲精品无码aⅴ大香| 无码不卡亚洲成?人片| 精品无码国产自产拍在线观看| 欧日韩国产无码专区| 免费无码毛片一区二区APP| 亚洲无码日韩精品第一页| 亚洲欧洲国产综合AV无码久久| 国产成年无码AV片在线韩国| 无码AⅤ精品一区二区三区| 亚洲天堂2017无码中文| 无码免费一区二区三区免费播放| 无码毛片一区二区三区视频免费播放 | 无码播放一区二区三区| 亚洲精品午夜无码电影网| 国产精品无码一区二区三区在| 久久亚洲AV无码精品色午夜麻豆| 国产色爽免费无码视频| 国产成人无码a区在线视频 | 永久免费AV无码网站在线观看| 久久午夜无码鲁丝片| 久久精品亚洲中文字幕无码网站| 四虎成人精品无码永久在线| 亚洲av永久无码精品秋霞电影秋| 伊人久久一区二区三区无码| 亚洲AV综合色区无码二区爱AV| 久久久久亚洲精品无码系列| 国产成人无码一区二区三区在线| 亚洲Av无码乱码在线播放| 亚洲AV无码乱码在线观看性色扶 | 无码人妻aⅴ一区二区三区有奶水| 亚洲人成无码网站在线观看| 无码中文人妻在线一区| 人妻在线无码一区二区三区| 日韩精品无码永久免费网站|