Pregunta

Estoy tratando de crear un programa de validación de mensajes y me gustaría crear reglas fácilmente modificables que se apliquen a ciertos tipos de mensajes. Debido al riesgo de que las reglas cambien, he decidido definir estas reglas de validación externas al código objeto.

He creado una interfaz básica que define una regla y me pregunto cuál sería la mejor manera de almacenar estos datos simples. Me estaba inclinando hacia XML pero parece que podría ser demasiado pesado.

Cada regla solo necesitaría un conjunto muy pequeño de datos (es decir, tipo de regla, valor, máscara aplicable, etc.).

¿Alguien sabe de un buen recurso que podría mirar que realizaría una funcionalidad similar? Prefiero no profundizar demasiado en XML en un problema que parece necesitar apenas un subconjunto de la funcionalidad que veo en la mayoría de los ejemplos con los que me encuentro.

Si puedo encontrar un ejemplo conciso para examinar, podría decidir si debo ir o no con un archivo plano.

¡Gracias de antemano por su aporte!

¿Fue útil?

Solución

Personalmente, para XML pequeño y fácilmente modificable, encuentro que TinyXML es un Excelente biblioteca. Puede hacer que cada clase entienda su propio formato, por lo que su jerarquía de objetos se representa directamente en el XML.

Sin embargo, si no cree que necesita XML, puede optar por un almacenamiento más ligero como yaml . Creo que es mucho más fácil comprender los datos subyacentes, modificarlos y ampliar la funcionalidad.

(Además, boost :: serialization tiene un archivo XML, pero no es lo que yo llamaría fácilmente modificable)

Otros consejos

Lo más simple es usar un archivo plano diseñado para ser fácil de analizar usando C ++ > > operador. Solo tokens simples separados por espacios en blanco.

Bueno, si desea que sus reglas sean legibles por humanos, XML es el camino a seguir, y puede interactuar bien con c ++ usando xerces . Si desea rendimiento y / o tamaño, puede guardar los datos como archivos binarios utilizando estructuras simples.

Otra forma de implementar esto sería definir sus reglas en el esquema XML y luego hacer que una herramienta de enlace de datos XML genere el modelo de objeto C ++ correspondiente junto con el código de análisis y serialización XML. Una de esas herramientas (en las que estoy trabajando) es CodeSynthesis XSD:

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

Para una visión general de 2 minutos de la idea, consulte el "Hola Mundo" ejemplo en la documentación de mapeo de C ++ / Tree.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top