Necesito escribir una aplicación linux C++ que guarda la configuración en formato XML (para una fácil edición manual) y también se comunica con aplicaciones existentes a través de mensajes XML sobre sockets y HTTP. El problema es que no he podido encontrar ninguna biblioteca inteligente que me ayude, particularmente no tengo ganas de escribir códigos DOM o SAX solo para escribir y leer algunos mensajes muy simples.C++ Serialización Limpiar XML Similar a XSTREAM
Boost Serialization era casi una coincidencia, pero agrega una gran cantidad de datos específicos de boost al xml que genera. Obviamente, esto no funciona bien para los formatos de intercambio. Me pregunto si es posible hacer que Boost Serialization o alguna otra biblioteca de serialización C++ genere xml limpio. No me importa si hay algunos atributos adicionales necesarios, como un atributo de versión, pero realmente me gustaría poder controlar sus nombres y también deshacerme de las 'características' que no uso - tracking_level y class_id para ejemplo.
Idealmente, me gustaría tener algo similar a xstream en Java. Soy consciente del hecho de que C++ carece de introspección y que, por lo tanto, es necesario hacer una codificación manual, pero sería bueno si hubiera una solución limpia para simplemente leer y escribir XML simple sin kludges.
Si esto no se puede hacer, también estoy interesado en herramientas donde el esquema XML es el recurso canónico (contrato primero), una buena alternativa JAXB a C++. Hasta ahora solo he encontrado soluciones comerciales como CodeSynthesis XSD. Preferiría soluciones de código abierto. He probado gSoap, pero genera un código realmente feo y también es específico de SOAP.
En la desesperación también comencé a buscar formatos de serialización alternativos para protobuffers. Esto existe, ¡pero solo para Java! Realmente me sorprende que los buffers de protocolo parezcan ser un formato de intercambio de datos mejor soportado que XML.
Me estoy volviendo loco solo encontrar libs para esta aplicación y realmente necesito algunas ideas nuevas. ¿Nadie?