【问题标题】:c++ linux library for creating an xml and reading from an xml (serialize/ deserialize)用于创建 xml 并从 xml 读取的 c++ linux 库(序列化/反序列化)
【发布时间】:2011-05-12 11:38:04
【问题描述】:

我在 Ubuntu 中工作。我有一个 .h 文件,其中包含一个类和许多嵌套类。我想从一个对象创建一个 XML 文件。有人可以给我一个创建 XML 文件、序列化和反序列化对象的库吗?我正在用 g++ 编译。

【问题讨论】:

  • 这到底和 Facebook 有什么关系?
  • 必须是 XML,否则你可以使用 boost::serialization。
  • 是的,我需要创建一个 xml,因为我会从服务器接收 xml 文件

标签: c++ xml xml-serialization


【解决方案1】:

试试libxml2

但您似乎想从 XML 序列化和反序列化一个对象。 Boost::serialization 可能会派上用场。它还支持从 XML 到 XML 的序列化。

Here 你可以找到 Boost::serialization with XML 的示例。

【讨论】:

    【解决方案2】:

    如果你想在 C++ 中处理 XML,你可以看看这些项目

    http://xmlsoft.org/

    http://www.grinninglizard.com/tinyxml/

    http://xerces.apache.org/xerces-c/

    【讨论】:

      【解决方案3】:

      它不使用 XML 进行序列化(我个人认为这是一个特性),但 Google protocol buffers 在序列化(以二进制格式)以 .proto 语言定义的对象方面做得很好。

      【讨论】:

        【解决方案4】:

        您可能想探索XML Data Binding。主要思想是,给定一个 xml 模式,数据绑定软件生成一个与该模式相对应的类层次结构,以及序列化/反序列化的代码(称为编组/解组)。有几种工具可以做到这一点,gsoap 是免费的,xmlSpy 是商业工具之一。

        【讨论】:

        • 嗨,你能给我一个使用 gsoap plz 创建/序列化 xml 对象反序列化 xml 对象的示例
        • 我们的设计发生了变化,所以最后我没有自己做,而是花了一些时间阅读手册。网站上或下载中有一个带有示例的教程。
        【解决方案5】:

        您描述的是 C++ 的 XML data binding。您想要做的事情有几种工具,请参见例如XML Data Binding Tools。我在几个 C++ 项目中使用了gSOAP,包括从具有非常好的类的 C++ 文件开始(其他工具迫使您从 XML 模式或 WSDL 开始)。使用 gSOAP,我已经能够生成 XML 模式和 XML,参见例如map C/C++ types to XML schema.

        【讨论】:

          【解决方案6】:

          一个超轻量级、简单的 xml 库是pugixml

          但请记住,C++ 不具备 .NET 所具有的反射功能。没有库会为您生成序列化/反序列化代码(我猜您希望如此)。

          【讨论】:

          • 抱歉,有 ARE 工具可以生成 XML(反)序列化代码(参见帖子)。
          • @Alex,也许我的措辞有点模棱两可。我的意思是没有 library 会生成序列化代码。我想指出 C++ 中缺乏反射,这使得这很难。
          • 无意冒犯,但它没有回答 OP 的问题,并且可能会增加更多的混乱来讨论不做 OP 正在寻找的库。你回到0有用让你开心:)
          • @Alex,我的回答与线程中的其他人非常相似。 OP 要求提供一个“创建 XML 文件、序列化和反序列化对象”的库。包括我自己在内的许多人都发布了 XML 库,并指出仅靠一个库不会达到他可能希望的效果。
          猜你喜欢
          • 2011-05-12
          • 2012-02-02
          • 1970-01-01
          • 2010-11-25
          • 2012-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多