C++ 反对 XML 进行通信
C++ Object to XML for communication
我正在寻找一种将对象转换为XML字符串表示C++的简单方法,因此我可以与服务器进行通信。
例如,假设我有一个对象:
class A{
string data1;
string data2;
string dataN;
list<B> bList;
}
class B{
string moreData;
}
我想要以下XML表示形式:(假设我创建了一个实例 A,它有两个 B 实例)
<A>
<data1>content</data1>
<data2>content</data2>
<dataN>content</dataN>
<B>
<moreData>content</moreData>
</B>
<B>
<moreData>content</moreData>
</B>
</A>
您所描述的内容称为 XML 数据绑定。有许多产品将从 XSD 或 DTD 生成C++代码,请查看 http://www.xmldatabinding.org/以获取列表,http://www.rpbourret.com/xml/XMLDataBinding.htm 以获取更多信息。
另请查看此 XML 数据绑定示例以了解C++,它显示了示例源架构和生成的代码。
如果你的模式非常基本,并且你有能力将它们调整到生成器,那么可能有一些开源项目可以完成这项工作。如果您绑定到 XML 标准,那么您很快就会遇到大多数生成器的限制。Liquid XML生成器几乎可以应对所有XSD标准,但你必须为此付费。
C++ 这个问题没有通用的解决方案,但是存在许多临时实现。
这个问题有一些显着的链接和操作方法:如何在C++中实现序列化
所以,没有标准的方法,因为简单地说,因为没有办法序列化指针和类似的东西。它将始终是特定于应用程序的。
但是,您可以创建自己的类并根据需要进行序列化。
至于xml解析器,你试过这个吗?它非常简单、高效且易于学习。我基本上都用它做了。您甚至可以要求它的商业许可。
相关文章:
- Cppcheck生成xml转储文件
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 如何在pugixml中获取节点的内部XML
- 如何使用tinyxml2从XML加载父实体和子实体
- 混淆了如何使用IDL与Ethovision进行通信
- boost xml parsingl将xml的路径作为变量发送
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 使用 Tinyxml 在 xml 中添加一个子子项
- C++ Boost::asio串行通信与Arduino无法写入
- 增强基于 XML class_id的反序列化
- 我是否需要包含隐式使用/与 WindowsAPI 通信"Windows.h"?
- 通过TCP的PvP通信问题
- C++一个线程如何正确通信其任务已完成?
- 在 c++ 中使用 vtd-xml 时,如何摆脱 EOFException?
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- c++ 读取 xml 文件的内容
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- 删除 XML 文件中的子节点C++
- C++ 反对 XML 进行通信