2010-10-31 8 views
0

Je travaille sur un projet C++ et je voulais obtenir des informations de la part de développeurs ayant une expérience similaire.Conversion de XML en objet C++

La tâche consiste à se connecter à un service Web qui donne les résultats sous une forme XML. Mon rôle dans la tâche est une fois que je reçois le formulaire XML, j'ai besoin de convertir le XML en un objet C++ et analyser les données XML à l'objet C++.

Voici mes clarifications. A) Une façon de faire est de tout faire à la main, mais je dois le faire pour des centaines de services Web. Je suis conscient qu'il existe des outils plus simples pour C# et Java pour faire la même chose.

Existe-t-il également un outil/utilitaire pour C++?

Toutes suggestions, seraient utiles.

+1

Lorsque vous dites que vous devez convertir le XML en objet C++, que voulez-vous dire exactement? Il semble que vous cherchez un analyseur XML C++? Il y en a un bon nombre, si c'est ce que vous cherchez, je peux en suggérer. J'ai récemment utilisé RapidXML et j'étais plutôt content. Également utilisé Xerces dans le passé. –

+0

@Guy semble chercher un conteneur IoC, qui peut être créé en lisant un fichier xml. –

Répondre

0

Si vous demandez s'il existe un moyen de créer dynamiquement une représentation d'objet d'un flux de données XML (de sorte que vous pouvez y accéder comme topLevel.subObject.value), ce n'est pas possible. C++ est un langage typé statiquement, ce qui signifie que tous les objets doivent être définis à la compilation. Le mieux que vous pouvez faire est quelque chose comme: xmlData.getSubObject ("objectName"). GetValue().

En ce qui concerne les outils pour l'analyse de quelque chose utilisable dynamiquement (comme dans mon exemple plus tard), il y en a plusieurs. Pour Windows, par exemple, vous pouvez utiliser les objets MSXML "intégrés". Cependant, il n'y a rien dans les bibliothèques C++ de base pour le faire, autant que je sache.

Espérons que ça aide.

1

Dans le passé, j'ai utilisé TinyXML pour mes besoins d'analyse XML. Mon code d'analyse fonctionnait sous l'hypothèse que toutes les entrées XML sont conformes à un schéma XSD particulier que j'ai écrit. Cela fonctionnait assez bien mais les effets d'entraînement étaient agaçants - si je voulais changer le XSD, je devais mettre à jour tous mes fichiers de test XML ainsi que mon code d'analyse. Même si ce n'est pas si grave dans le cas de l'analyse d'un schéma, je détesterais avoir à le faire pour des centaines d'entre eux.

Je ne suis pas sûr de ce que la solution commune est, mais CodeSynthesis XSD semble très prometteur. Je ne l'ai pas utilisé, mais il semble qu'il génère une couche de données, un analyseur et un code de sérialisation pour vous. Cela pourrait vous faire gagner beaucoup de temps.