我需要编写一个 linux c++ 应用程序,它以 XML 格式保存它的设置(以便于手动编辑),并且还通过套接字和 HTTP 上的 XML 消息与现有应用程序进行通信。问题是我无法找到任何智能库来帮助我,我并不特别想编写 DOM 或 SAX 代码来编写和阅读一些非常简单的消息。
Boost Serialization 几乎是一个匹配项,但它在它生成的 xml 中添加了许多特定于 boost 的数据。这显然不适用于交换格式。我想知道是否可以使 Boost Serialization 或其他一些 c++ 序列化库生成干净的 xml。我不介意是否有一些必需的额外属性——比如版本属性,但我真的希望能够控制它们的命名并摆脱我不使用的“功能”——tracking_level 和 class_id实例。
理想情况下,我只想在 Java 中拥有类似于 xstream 的东西。我知道 c++ 缺乏自省,因此有必要进行一些手动编码 - 但如果有一个干净的解决方案来读取和写入简单的 XML 而不会产生混乱,那就太好了!
如果无法做到这一点,我也对 XML 模式是规范资源(合同优先)的工具感兴趣——这是 C++ 的一个很好的 JAXB 替代品。到目前为止,我只找到了像 CodeSynthesis XSD 这样的商业解决方案。我更喜欢开源解决方案。我已经尝试过 gSoap - 但它会生成非常丑陋的代码,而且它也是特定于 SOAP 的。
无奈之下,我也开始寻找 protobuffers 的替代序列化格式。这存在 - 但仅适用于 Java!令我惊讶的是,协议缓冲区似乎是比 XML 更受支持的数据交换格式。
我只是为这个应用程序寻找库而发疯,我真的需要一些新的想法。任何人?