2010-07-08 91 views
1

我不确定什么是正确的术语,有点像使用XML作为数据存储的ORM。是否有任何体面的工具可以基于XML模式自动生成C++类(包括数据和序列化/反序列化)?或者将创建基于C++类定义的XML同步代码和模式?C++代码/ XML生成工具

TinyXML非常好,但它花费所有时间编写代码来将XML数据加载/保存到类中是如此的老派。我已经看到类似的工具集中在SOAP/WSDL上,但他们在基础之上生成了各种其他代码。

那里有好的开源库吗?

+0

根据我的经验,基于XML模式自动生成C++类不是一个好主意,特别是如果模式很大和/或可能会更改。每次模式更改时,都必须重新生成所有类,这通常需要完全重建系统的其余部分。 – 2010-07-08 15:27:19

+3

更好,我必须重建比我的代码是错误的。重建的时间比编写和测试超枯燥的XML(de)序列化代码的日子要好。 – 2010-07-08 15:41:48

回答

2

我所见过的唯一尝试做到这一点的是CodeSynthesisXSD

+1

我们试过这个以及其他约5种产品,这是赢家。 也很好的支持。 – 2010-07-08 15:56:05

+0

格雷格没有提到他和他的合作者尝试过的其他产品,但是响应[XML Schema to C++ Classes](http://stackoverflow.com/q/445905/1497596)提供了许多其他可能性。 – DavidRR 2013-10-23 13:40:33

0

不是开源的,但不会XML Thunder适合你吗?

+0

这是C而不是C++,但值得一看。我看不到他们网站上的下载/购买/定价链接,可以吗? – 2010-07-08 15:45:29

+0

除了他们已经做了很长时间以外,对他们不了解的很多。祝你好运。 – 2010-07-08 16:23:15

0

如果你正在寻找一个开源和商业许可的工具自动生成的C++类,包括数据和序列化/反序列化,基于XML模式,那么我强烈建议GSOAP。它易于使用,符合行业标准,并得到积极维护。

又见http://www.rpbourret.com/xml/XMLDataBinding.htm

我感到失望的是保证完整的数据绑定,但将无法处理更广泛的套WSDL和模式,如ONVIF的其他许多C++ XML工具。不得不重整整个项目是一件痛苦的事情。我知道GSOAP将完成这项工作。一个赢家恕我直言。