Question

J'essaie de créer un programme de validation de message et souhaite créer des règles facilement modifiables qui s'appliquent à certains types de message. En raison du risque de modification des règles, j'ai décidé de définir ces règles de validation externes au code d'objet.

J'ai créé une interface de base qui définit une règle et je me demande quel serait le meilleur moyen de stocker ces données simples. Je me suis penché vers XML, mais il semble que ce soit trop lourd.

Chaque règle n'a besoin que d'un très petit ensemble de données (type de règle, valeur, masque applicable, etc.).

Est-ce que quelqu'un connaît une bonne ressource que je pourrais consulter qui aurait une fonctionnalité similaire? Je préférerais ne pas trop approfondir le langage XML sur un problème qui semble avoir à peine besoin d'un sous-ensemble des fonctionnalités que je vois dans la plupart des exemples que je rencontre.

Si je peux trouver un exemple concis à examiner, je serais en mesure de décider s'il convient ou non d'utiliser un fichier plat.

Merci d'avance pour votre contribution!

Était-ce utile?

La solution

Personnellement, je trouve TinyXML un fichier XML facilement modifiable. excellente bibliothèque. Vous pouvez faire en sorte que chaque classe comprenne son propre format, votre hiérarchie d’objets est donc directement représentée dans le XML.

Toutefois, si vous pensez ne pas avoir besoin de XML, vous pouvez choisir un stockage plus léger, comme yaml . Je trouve qu'il est beaucoup plus facile de comprendre les données sous-jacentes, de les modifier et d'étendre les fonctionnalités.

(En outre, boost :: serialization possède une archive XML, mais ce n'est pas ce que j'appellerais facilement modifiable)

Autres conseils

Le plus simple consiste à utiliser un fichier plat conçu pour une analyse facile à l’aide des fichiers C ++ > > opérateur. De simples jetons séparés par des espaces.

Eh bien, si vous voulez que vos règles soient lisibles par l’homme, XML est le chemin à parcourir et vous pouvez l’interfacer agréablement avec c ++ en utilisant xerces . Si vous voulez des performances et / ou une taille, vous pouvez enregistrer les données en tant que fichiers binaires à l’aide de structures simples.

Une autre méthode consiste à définir vos règles dans XML Schema, puis à faire utiliser un outil de liaison de données XML pour générer le modèle objet C ++ correspondant, ainsi que le code d’analyse et de sérialisation XML. Un de ces outils (sur lequel je travaille) est CodeSynthesis XSD:

http://www.codesynthesis.com/products/xsd/

Pour un aperçu de l'idée en 2 minutes, consultez la rubrique "Hello World". exemple dans la documentation de mappage C ++ / Tree.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top