C ++序列化Clean XML与XSTREAM类似

我需要编写一个linux c ++应用程序,它以XML格式保存设置(便于手动编辑),并通过套接字和HTTP上的XML消息与现有应用程序通信。问题是我找不到任何智能库来帮助我,我并不特别喜欢编写DOM或SAX代码来编写和阅读一些非常简单的消息。 Boost Serialization几乎是匹配,但它为它生成的xml添加了许多特定于boost的数据。这显然不适用于交换格式。我想知道是否有可能使Boost Serialization或其他一些c ++序列化库生成干净的xml。我不介意是否有一些必需的额外属性 - 比如版本属性,但我真的希望能够控制他们的命名并摆脱我不使用的'功能' - tracking_level和class_id for实例。 理想情况下,我只想在Java中使用类似于xstream的东西。我知道c ++缺乏内省,因此有必要进行一些手动编码 - 但是如果有一个干净的解决方案来读取和编写简单的XML而没有kludges会很好! 如果无法做到这一点,我也对XML模式是规范资源(合同优先)的工具感兴趣 - 一个很好的JAXB替代C ++。到目前为止,我只找到了像CodeSynthesis XSD这样的商业解决方案。我更喜欢开源解决方案。我尝试过gSoap - 但是它生成了非常丑陋的代码,并且它也是特定于SOAP的。 无奈之下,我也开始研究protobuffers的替代序列化格式。这存在 - 但仅限Java!令我惊讶的是,协议缓冲区似乎是比XML更好的支持数据交换格式。 我很生气只为这个应用程序找到libs,我真的需要一些新的想法。任何人?     
已邀请:
我不确定它提供的是什么,因此如果它是你正在寻找的,但Qt有一个xml模块。它还有一个网络模块,听起来好像它可能对你有用。     
为了进一步扩展Troubadour的答案,我使用了Qt的XML库,并且非常成功地做了一些非常接近你的事情。在我自己的情况下,我将配置数据序列化为本地文件,然后偶尔将其传输到其他线程。 QXmlStreamWriter和QXmlStreamReader是有问题的两个类。以下是使用它们的示例。 对于我自己的XML序列化,我可以完全控制生成的实际格式,只需要几百行代码即可实现。关于使用Qt的XML,我能说的最好的事情是我可以专注于内容,让图书馆做标记数据的痛苦工作 - 这是理想的。 最后,这里有关于Qt许可证(商业,GPL,LGPL)的一些信息。     
问题的引用: “到目前为止,我只找到了像CodeSynthesis这样的商业解决方案 XSD。我更喜欢开源解决方案“ CodeSynthesis XSD可以由开源项目使用。该产品 拥有商业专有许可证,但除此之外 也有一个开源许可证(GPL版本2,但有 额外的自由)。您可以与所有人一起使用 “GPL兼容的自由软件许可”和所有“GPL兼容的免费软件” 软件许可证“列于 http://www.gnu.org/licenses/license-list.html CodeSynthesis XSD的第三个许可选项是免费专有 小词汇的许可证。您可以免费使用该许可证 如果您使用的是小型XML架构。 在此处阅读有关不同CodeSynthesis XSD许可证的更多信息: http://www.codesynthesis.com/products/xsd/license.xhtml 在功能方面,CodeSynthesis XSD还支持序列化 并解析生成的二进制格式。你可以使用那种格式 有效沟通。     

要回复问题请先登录注册