C ++ Object to XML用于通信

时间:2012-05-06 22:04:43

标签: c++ xml serialization xml-serialization

我正在寻找一种简单的方法将在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>

3 个答案:

答案 0 :(得分:3)

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

另请查看此XML Data Binding example for C++,它显示了示例源架构和生成的代码。

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

答案 1 :(得分:3)

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

这个问题有一些非凡的联系和方法:How to implement serialization in C++

答案 2 :(得分:2)

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

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

至于xml解析器,你试过this one吗?它非常简单,高效且易于学习。我基本上都完成了它。你甚至可以要求获得商业许可证。