将C ++对象转换成XML以进行通信。

6
我可以帮助您将一个对象转换成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>

2
https://dev59.com/X3VC5IYBdhLWcg3woCnN - m0skit0
@m0skit0,这是一个很棒的库。我使用了boost XML的示例,但它输出的XML包含了更多的信息,而我只需要一些元数据(例如与项目相关的元数据等)。有没有办法生成像我在问题中发布的那样简单的输出呢? - Santi Agüero
1
你可以编写自己的XML读取器和写入器。如果您要序列化的对象数量有限,则有时候这是有意义的。 - Anon Mail
3个回答

3
您所描述的是XML数据绑定。有许多产品可以从XSD或DTD生成C++代码,请查看http://www.xmldatabinding.org/以获取列表,以及http://www.rpbourret.com/xml/XMLDataBinding.htm以获取更多信息。
此外,您还可以查看这个C++ XML数据绑定示例,它展示了示例源模式和生成的代码。
如果您的模式相当基本,并且您有能力调整它们以适应生成器,则可能有一些开源项目可以完成该工作。如果您要绑定到XML标准,则很快就会遇到大多数生成器的限制。 Liquid XML生成器可以处理几乎所有XSD标准,但您需要付费。

3

在C++中,这个问题没有通用的解决方案,但是存在许多特定应用的实现。

这个问题有一些非常好的链接和操作指南:如何在C++中实现序列化


2

因为没有办法序列化指针等内容,所以没有标准方法。这将始终是应用程序特定的。

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

至于xml解析器,您尝试过这个吗?它非常简单、高效且易于学习。我基本上都用它完成了。您甚至可以向其申请商业许可证。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接