6

我正在寻找一种将C++ 中的对象转换为 XML 字符串表示形式的简单方法,这样我就可以与服务器进行通信。

例如,假设我有一个对象:

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>
4

3 回答 3

3

您所描述的称为 XML 数据绑定。有许多产品将从 XSD 或 DTD 生成 C++ 代码,请查看http://www.xmldatabinding.org/以获取列表,以及http://www.rpbourret.com/xml/XMLDataBinding .htm了解更多信息。

还可以查看这个C++ 的 XML 数据绑定示例,它显示了示例源模式和生成的代码。

如果您的模式非常基本,并且您有能力将它们调整到生成器,那么可能有一些开源项目可以完成这项工作。如果您要绑定到 XML 标准,那么您很快就会遇到大多数生成器的限制。Liquid XML生成器几乎可以处理所有 XSD 标准,但您必须为此付费。

于 2012-05-29T09:56:25.093 回答
3

C++ 中没有针对此问题的通用解决方案,但是存在许多临时实现。

这个问题有一些值得注意的链接和操作方法:如何在 C++ 中实现序列化

于 2012-06-09T15:41:35.253 回答
2

所以,没有标准的方法,因为,简单地说,因为没有办法序列化指针和类似的东西。它始终是特定于应用程序的。

但是,您可以创建自己的类并根据需要进行序列化。

至于 xml 解析器,你试过这个吗?它非常简单、高效且易于学习。我基本上已经完成了所有工作。您甚至可以要求获得商业许可。

于 2012-05-29T10:17:20.250 回答