【问题标题】:C++ Object to XML for communicationC++ 对象到 XML 的通信
【发布时间】:2012-05-15 12:34:36
【问题描述】:

我正在寻找一种将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>

【问题讨论】:

  • @m0skit0 这是一个很棒的库。我以boost XML 为例,但是它输出的 XML 包含我想要的更多信息(例如与项目对应的元数据等)有没有办法像我在我的问题中发布的那样产生更简单的输出?
  • 您可以编写自己的 xml 阅读器和编写器。如果您要序列化的对象数量有限,有时这很有意义。

标签: c++ xml serialization xml-serialization


【解决方案1】:

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

这个问题有一些非凡的链接和操作方法:How to implement serialization in C++

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案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 标准,但您必须为此付费。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-23
        • 2013-11-15
        • 2013-06-16
        • 1970-01-01
        相关资源
        最近更新 更多