Utiliser TinyXML2 en C++

Pourquoi et comment parser/stocker dans du XML en C++ avec tinyxml2

a marqué ce sujet comme résolu.

Salut tout le monde ! Un ami m'a récemment prêté un nom de domaine pour que je me fasse un espèce de mini-devblog ou je posterais un peut tout ce que je veut … Mais là n'est pas la question. Pour le remplir parce qu'il était vide, je me suis dit que j'allais parler d'un truc utile et que je n'ai pas encore croisé sur le web français … Et voilà : http://lostindark.blackfields.net/2014/10/parsons-du-xml-avec-tinyxml2/

Après quelques jours à me battre entre l'envie de finir ce tuto et faire mes devoirs de philo (la grammaire du français laisse supposer que j'aimerais peut-être les devoirs de philo, il n'en est rien). Enfin bon, je me suis dit pendant que je l'écrivais que ce serait super de le partager pour apporter ma pierre à mon site communautaire préféré : Zeste de savoir. (Même si j'aimais bien feu le site du zéro, il n'est pas mon préféré … Soit dit en passant vous remarquerez que je cite Zeste de Savoir en premier dans l'article !)

Qu'est ce que vous en pensez ? Vous seriez intéressé si je le postais ici ? Bie sur ça me ferais un peu de boulot mais j'en serais ravi ! :)

Merci d'avance pour vos réponses !

Petit edit : j'ai publié le tuto sur mon blog, donc j'ai changé le lien, je referais un up quand j'aurais ajouté la 3ème partie ! :)

PS : Je suis ouvert aux critiques, si vous ne trouvez pas le tutoriel assez bien, je serais ravi que vous m'aidiez à l'améliorer ! ;)

+0 -0

Pour assert, assert(cond && "message") suffit généralement. Mais assert, c'est pour la PpC, pas pour vérifier des erreurs de runtime. Je m'étends sur le sujet par là: http://luchermitte.github.io/blog/2014/05/24/programmation-par-contrat-un-peu-de-theorie/

Je n'aime pas trop tout ces pointeurs bruts, mais peut-être c'est ce vers quoi TinyXML nous pousse.

Sinon, pourquoi TinyXML2, et pas une autre lib ? (ou alors, j'ai lu trop vite) Parmi :

et j'en oublie.

Ok, donc tu pense que je devrais faire quoi ? Utiliser des exceptions ? :? Sinon, assert(cond && "message") c'est très bien, sauf quand tu veut faire varier le message ! Là j'ai un numéro d'erreur, et si j'affiche assert && x, bah l'assertion ne va pas remplacer x par sa valeur ! x)

Après pourqoui tinyxml2 ? J'en vais entendu du bien, elle est simple, légère, facile a installer, bien documentée, et assez utilisée, donc c'est un peu le graal du débutant non ? :) J'accepte volontier ton aide si tu veut apporter un comparatif par rapport aux autres libs ! (Parce que moi c'est la seule que je connais assez bien quoi ^^')

Enfin, pour les pointeurs nu, je t'avoue que ça me dérangeais aussi, il faudrait que je prenne le temps de vérifier si le pointeur est propriétaire ou non de la ressource … Si ce n'est pas le cas par contre, pas le choix, pointeur, car une référence ne peut pas être nulle …

Merci d'avance pour ta réponse ! :)

+0 -0

Oui, tu devrais clairement utiliser des exceptions. Un fichier non conforme au format attendu n'est pas une erreur de programmation.

Pour le message dynamique, certes, avec assert() ce n'est pas possible. Mais … Tout l'intérêt d'assert est d'avoir un coredump et donc bien plus qu'un petit message de trace. Là, je te renvoie à mon deuxième billet sur la PpC. Ce qui fait qu'avoir un message non dynamique n'est pas si grave.

J'avais fait un petit (et très succinct) comparatif dans le passé, mais des choses ont changé et j'ai pu expérimenter CodeSynthésis XSD/tree depuis. Et au travers des présentations de libstudxml lors du CppCon14, son mainteneur a procédé à un comparatif.

Après, c'était juste pour savoir s'il y avait une raison au choix de TinyXML2 (qui n'est donc pas TinyXML), ou si c'était juste le hasard si c'est la lib que tu as utilisée. Quand il y a une raison derrière un choix, c'est toujours intéressant de la connaitre.

Ok, je vais essayer de corriger ça avec des exceptions ! :) Ton lien ne mène nulle part pour moi ? Sinon, tu accepterais d'être mis en co-auteur pour présenter ton comparatif ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte