c 之boost庫序列化xml不能新增屬性問題

2021-08-28 19:04:05 字數 650 閱讀 6208

最近投入了c++的大家庭,搞了一段時間boost庫。

對於序列化問題c#已經十分成熟,在c++由於第三方可靠庫比較少,google出了protobuf來支援跨平台之間的物件類傳輸資料的通訊問題,十分簡單實用。

但本次所遇問題是不需要protobuf這種較大的附加庫,只能在原有的官方庫中尋找解決辦法。雖然困難上公升,但是同時也不需要與c#跨平台。boost庫的xml序列化列入了首選。

一切都進展順利,但是boost由於官方考慮,防止版本等問題過來,降低序列化和反序列化的難度和bug,對xml這種比較鬆散的結構進行了限制,不允許對節點屬性進行操作。

本次問題存在與需要與核心生成資料xml進行互動,但為降低重複勞動,需要序列化類成xml,並可以編輯屬性。

所以,想到了乙個折中的辦法,在類中將xml的屬性值也作為element,用特殊字元表示。將序列化後生成的xml檔案通過自己寫的類轉換成核心允許的xml檔案。反之亦然,將核心生成的帶有屬性的鬆散xml轉換成可以反序列化的xml檔案。

下面是這個轉換類:

transxml.h

#pragma once

#include#include#include #include #include class transxml

;

transxml.cpp

boost庫xml序列化

今天利用編版本的時間研究了一下boost的序列化,特別是xml序列化的東東,還是有很多收穫,記下來怕以後忘記了,人老了,很多東東都記不得了.一 研究boost庫xml序列化要做準備的工作 a.下乙個最新的boost庫記住用1.32版本的,這個版本提供了xml序列化的支援 b.windows下用的vc...

利用Boost庫進行序列化

第一部分 vs2010 boost 安裝到指定目錄下,例如 二 在vs2010中使用boost庫 配置lib路徑 第二部分 序列化 我們希望能夠將類物件的成員變數中的值儲存下來,以便下次直接恢復使用。這可以通過序列化來實現,即將這些變數值保持下來,以後需要時直接將保持值恢復到類物件的成員變數中。簡言...

boost序列化與反序列化

include include include include include include include include include include 將字串序列化到檔案 void serialize str to file 從檔案中反序列化處字串 void deserialize file...