从XML转换为C ++对象

时间:2010-10-31 00:38:57

标签: c++ xml

我正在开发一个C ++项目,并希望从具有类似经验的开发人员那里获得一些输入。

任务是连接到Web服务,该服务以XML格式提供结果。我在任务中的角色是,一旦收到XML表单,我需要将XML转换为C ++对象并将XML数据解析为C ++对象。

以下是我的澄清。

a)一种方法是手工制作整个东西,但我需要为大约数百个Web服务执行此操作。我知道C#和Java有更简单的工具可以做同样的事情。

C ++也有工具/实用工具吗?

任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:1)

过去,我使用TinyXML来满足我的XML解析需求。我的解析代码是在假设所有XML输入符合我编写的特定XSD架构的情况下运行的。它工作得相当好但是涟漪效应很烦人 - 如果我想更改XSD,我必须更新所有的XML测试文件以及我的解析代码。虽然在解析一个模式的情况下并没有那么糟糕,但我不想为数百个模式做这件事。

我不确定常见的解决方案是什么,但CodeSynthesis XSD听起来很有希望。我没有使用它,但它似乎为您生成数据层,解析器和序列化代码。可以为你节省很多时间。

答案 1 :(得分:0)

如果你问是否有办法动态创建XML数据流的对象表示(这样你可以像topLevel.subObject.value一样访问它),那是不可能的。 C ++是一种静态类型语言,这意味着所有对象都需要在编译时定义。你能做的最好的事情是:xmlData.getSubObject(“objectName”)。getValue()。

对于解析成动态可用内容的工具集(根据我后面的例子),有几个。例如,对于Windows,您可以使用“内置”MSXML对象。然而,据我所知,基础C ++库中没有任何内容可以执行此操作。

希望有所帮助。