`
febird
  • 浏览: 256360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

序列化如何简洁地支持XML

阅读更多

目前该框架(DataIO)仅支持二进制。想起序列化支持只需要一个宏DATA_IO_LOAD_SAVE/DATA_IO_LOAD_SAVE_V,对象成员基本上用“&”连接起来,这样,可以写一个简单的语法分析器,将成员序列化表达转化成字符串,然后进行语法分析,这样,就可以在不用改变客户代码的情况下,进行文本方式(如XML)的序列化了,比boost的要简单许多。

如,目前的宏这样定义:

  1. #define DATA_IO_LOAD_SAVE(Class, Members)   \
  2.     template<class DataIO> void load(DataIO& dio) { dio Members; }      \
  3.     template<class DataIO> void save(DataIO& dio) const { dio Members; }    \
  4.     DATA_IO_REG_LOAD_SAVE(Class)

可以改成这样:

  1. #define DATA_IO_LOAD_SAVE(Class, Members)   \ 
  2.     template<class DataIO> void load(DataIO& dio) { static Grammar gram = dio.parse(#Members); Loader ld(gram, dio); ld Members; }      \
  3.     template<class DataIO> void save(DataIO& dio) const { static Grammar gram = dio.parse(#Members); Saver sv(gram, dio); sv Members;     \
  4.     DATA_IO_REG_LOAD_SAVE(Class)

 

项目地址:http://code.google.com/p/febird

 

 

分享到:
评论

相关推荐

    VB.NET XML和JSON序列化与反序列化

    在VB.NET编程环境中,XML和JSON序列化与反序列化是常见的数据处理技术,用于将对象转换为文本格式(XML或JSON),以便于存储、传输和解析。这两者都是轻量级的数据交换格式,广泛应用于Web服务和客户端应用程序之间...

    12xml序列化器

    - 简洁的API设计:为了简化开发者的工作流程,这个序列化器可能提供易于理解和使用的API,使得XML序列化和反序列化过程更加直观。 - 自动类型转换:它可能会自动处理不同类型的数据,如字符串、整数、日期等,将其...

    对象序列化成XMLDemo

    记住,虽然XML序列化是一个强大的工具,但在某些情况下,JSON序列化可能更受欢迎,因为它的结构更简洁,解析速度更快。此外,Android还提供了`Gson`库,它可以方便地将Java对象转换为JSON字符串,反之亦然。 总的来...

    serializer, 用于序列化任何复杂( 支持 XML,JSON,YAML ) 数据的( e ) 库.zip

    Serializer库支持XML序列化,意味着它可以将XML文档解析为Python对象,同时也能将Python对象转换成XML字符串。这对于那些需要处理XML数据的开发者来说,大大简化了工作流程。 JSON(JavaScript Object Notation)是...

    C# 各种序列化和反序列化

    SOAP序列化在早期Web服务中广泛使用,但现在已被更简洁的RESTful API取代;JSON序列化在Web开发中占据主导地位,因其轻便和高效而被喜爱;二进制序列化则在对性能有严格要求且不涉及跨平台的情况下较为合适。开发者...

    xml序列化与反序列化源代码下载

    总之,XML序列化和反序列化是.NET开发中不可或缺的技能,它能够方便地在对象和XML数据之间进行转换,从而促进数据交换和存储。通过VS2010提供的示例,初学者可以深入理解这些概念,并在实际项目中灵活运用。

    4.Xml序列化器

    Xml序列化器是一种在编程中用于将对象的状态转换为XML格式的数据,并且能够将XML数据恢复为原始对象的工具。这种技术在数据交换、持久化存储以及网络通信中扮演着重要角色,尤其在分布式系统和Web服务中广泛使用。...

    C# 序列化反序列化

    在C#中,我们可以使用`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`、`System.Xml.Serialization.XmlSerializer`或`System.Text.Json.JsonSerializer`等类来实现对象的序列化。在这个例子中,...

    序列化示例代码

    在编程领域,序列化是一个关键概念,用于将对象的状态转换为可以存储或传输的数据格式,如文本或二进制。这个过程使得数据可以在不同...在实际项目中,根据需求选择合适的序列化方式能有效地提高系统的性能和可维护性。

    序列化的三种形式

    例如,JSON和XML都支持版本控制,而二进制序列化在处理不同版本的对象时可能会遇到困难。此外,了解如何自定义序列化过程,如忽略特定字段或处理特殊类型,也是提高代码灵活性的关键。通过深入理解和实践,C#开发者...

    C# 序列化简易源代码(初学者必看)

    这些方法通过.NET框架的类库支持,使得开发者能够方便地处理对象的序列化和反序列化。 标题“C# 序列化简易源代码(初学者必看)”表明这个压缩包可能包含了一些简单的C#代码示例,帮助初学者理解和应用序列化技术...

    一个基于java jaxb的序列化例子,非常简单易懂

    Java JAXB(Java Architecture for XML Binding)是Java平台上的一个标准组件,用于XML和Java对象之间的绑定,实现了XML的序列化和反序列化。这个技术使得开发者可以方便地将Java对象转换为XML文档,同时也可以从XML...

    C#2.0序列化和反序列化 程序集反射技术

    XML序列化支持自定义序列化行为,如忽略特定属性。 3. **DataContractSerializer**: 专为WCF(Windows Communication Foundation)设计,提供高性能的XML序列化,支持服务之间的数据交换。 4. **JsonSerializer**: ...

    asp 序列化与反射

    2. **JSON序列化**:随着Web服务的普及,JSON因为其简洁性和高效性,成为常用的序列化格式。在.NET中,可以使用Json.NET库(Newtonsoft.Json)进行JSON序列化和反序列化。 3. **二进制序列化**:二进制序列化通常...

    自己实现的protobuf 压缩类,并能序列化反序列化

    1. **简洁高效**:protobuf提供的数据格式比XML或JSON更紧凑,传输更快。 2. **跨平台**:protobuf可以生成多种编程语言的代码,方便不同平台间的通信。 3. **自动代码生成**:通过.proto文件,可以自动生成序列化和...

    delphi_BaseObject_json序列化反序列化1

    3. **自定义实现**:如果不想依赖第三方库,Delphi的内置XML数据类型和RTTI(运行时类型信息)可以辅助我们手动实现JSON序列化和反序列化。使用RTTI获取对象的每个属性,然后根据属性类型转化为JSON格式。反序列化时...

    protostuff序列化包

    7. **易于扩展**: Protostuff的API设计得非常简洁,使得开发者可以很容易地扩展其功能,比如添加新的数据格式支持或定制序列化策略。 8. **模块化**: protostuff-master这个压缩包很可能包含了多个模块,每个模块...

    nice-xml:XML解析器和序列化器

    《深入理解nice-xml:XML解析与序列化的高效工具》 在信息技术领域,XML(Extensible Markup Language)作为一种数据交换格式,广泛应用于数据存储、配置文件、Web服务等多种场景。XML文档结构清晰,易于人阅读,...

    .net 序列化 反序列化

    .NET序列化与反序列化是.NET框架中一个重要...使用这样的工具类,开发者无需关心具体的序列化实现,只需要调用相应的接口,就能轻松地完成对象的序列化和反序列化操作。这大大提高了开发效率,同时降低了代码的复杂性。

    XStream对象序列化

    XStream对象序列化是一种在Java应用程序中将Java对象转换为XML格式的过程,这主要通过XStream库实现。这个库提供了一种简洁的方式来处理对象到XML的转换,反之亦然,而不需要复杂的配置或对对象进行特定的修改。...

Global site tag (gtag.js) - Google Analytics