XML序列化数据对象(一)

11 篇文章 0 订阅
本文介绍了XML序列化数据对象的几种方法,包括MFC的序列化机制、Boost库的模板实现,以及作者自定义的代码生成策略。强调了在数据结构变化时,不同方法的适应性和修改便利性,并分享了作者自创的通过程序生成序列化代码的独特做法。
摘要由CSDN通过智能技术生成

XML序列化数据对象(一)

struct STState
{
	double m_dPosition;
	std::string m_strMemberName;
	double m_dTemperature;
};

STState stState;

假设某程序有stState这么一个数据对象需要对这个对象进行存储对数据对象存储就是序列化了


1. MFC中按照MFC的规则可以对对象进行序列化.(通过宏好像因为很少用MFC的序列化.).

   

MFC的这种序列化有两个序列化函数一个负责写入文件一个负责读取文件MFC这种序列化变量的存储是有顺序的读写两个函数必须要对应.


2. Boost库实现对象的序列化.

       

      Boost中通过模板实现每一个需要实现序列化的数据对象的类需要实现一个序列化模板函数.

看这两篇文章的说明

http://blog.csdn.net/cay22/article/details/4386250

http://blog.csdn.net/cay22/article/details/4386394


3. 自己写代码.

      

         也可以自己生成XML文件来存储数据对象当然也是写一个写入文件的函数和写一个读取文件的函数如果数据结构的结构改变了这两个函数也是需要修改的,  改动比较大的时候很容易错误如果有10个数据结构就要有20个解析过程(读写各10), 对着这20个解析过程你可能会疯掉.(我也做过这样的事情!!!!!!!!!!!!!!!!!!!!!!!!!!!).再见

虽然解析各个数据结构的解析过程都不同但是读写XML的流程是一致的所以为什么boost使用模板函数做序列化处理的原因

         万变不离其中(模板就是在代码层的上一层编程). 我自己写序列化的代码也是在代码层的上一层编程但不是通过模板而是通过写一个程序这个程序根据数据结构的结构自动生成写文件函数和读文件函数代码生成代码后重新编译程序即可与使用模板有相似之处.

(我不知道这么做与使用模板谁好谁差只是想实现一些自己的想法但这想法可能把事情复杂化同时生成的一些代码也的确对自己的工作加快了).

(把一些机械化和习惯性的工作固化到你的程序中可以尽量的减少犯错误和可以提高工作效率)

          MFCboost的方法都是很方便的如果数据结构改变只需要修改序列化函数重新编译即可(修改的地方只有一处大大减少犯错误的机会).


4. 如何实现XML序列化数据对象(我自己的做法)


4.1 定义对象类型使用XML保存


例如<basetype name = "int"></basetype>, 还有很多种类型


4.2 有了XML格式存储的类型数据对象的XML格式也可以确定下来后面怎么弄都行了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值