gpt4 book ai didi

类似于 XSTREAM 的 C++ 序列化清理 XML

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:03 26 4
gpt4 key购买 nike

我需要编写一个 linux c++ 应用程序,以 XML 格式保存它的设置(便于手动编辑),并通过套接字和 HTTP 通过 XML 消息与现有应用程序通信。问题是我一直无法找到任何智能库来帮助我,我并不特别喜欢编写 DOM 或 SAX 代码只是为了编写和读取一些非常简单的消息。

Boost Serialization 几乎匹配,但它向它生成的 xml 添加了大量特定于 boost 的数据。这显然不适用于交换格式。我想知道是否有可能使 Boost Serialization 或其他一些 c++ 序列化库生成干净的 xml。我不介意是否需要一些额外的属性——比如版本属性,但我真的很想能够控制它们的命名并摆脱我不使用的“功能”——tracking_level 和 class_id实例。

理想情况下,我只想拥有类似于 Java 中的 xstream 的东西。我知道 C++ 缺乏自省(introspection),因此有必要进行一些手动编码 - 但如果有一个干净的解决方案来读取和写入简单的 XML 而不会出现问题,那就太好了!

如果无法做到这一点,我也对 XML 模式是规范资源(契约优先)的工具感兴趣 - 一个很好的 JAXB 替代 C++。到目前为止,我只找到了像 CodeSynthesis XSD 这样的商业解决方案。我更喜欢开源解决方案。我已经尝试过 gSoap - 但它生成的代码非常难看,而且它也是特定于 SOAP 的。

无奈之下,我也开始寻找原型(prototype)缓冲区的替代序列化格式。这存在 - 但仅适用于 Java! Protocol Buffer 似乎是一种比 XML 更受支持的数据交换格式,这让我感到非常惊讶。

我快要为这个应用程序寻找库了,我真的需要一些新想法。有人吗?

最佳答案

我不确定它到底提供了什么,因此它是否正是您要找的东西,但 Qt 有一个 xml 模块。它还有一个网络模块,听起来好像对你有些用处。

关于类似于 XSTREAM 的 C++ 序列化清理 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2880953/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com