Мне нужно написать приложение linux c ++, которое сохраняет настройки в формате XML (для удобного ручного редактирования), а также взаимодействует с существующими приложениями через сообщения XML через сокеты и HTTP. Проблема в том, что мне не удалось найти каких-либо интеллектуальных библиотек, которые бы мне помогли, мне особенно не хочется писать DOM или SAX-код только для того, чтобы писать и читать очень простые сообщения.
Повышенная сериализация была почти совпадением, но она добавляет много специфичных для повышения данных в xml, который она генерирует. Это явно не работает для форматов обмена. Мне интересно, можно ли заставить Boost Serialization или какую-либо другую библиотеку сериализации c ++ генерировать чистый xml. Я не против, если есть какие-то обязательные дополнительные атрибуты - например, атрибут версии, но мне бы очень хотелось иметь возможность контролировать их именование, а также избавиться от «функций», которые я не использую - tracking_level и class_id для пример.
В идеале я бы хотел иметь что-то похожее на xstream в Java. Я осознаю тот факт, что в С ++ отсутствует интроспекция, и поэтому необходимо выполнить какое-то ручное кодирование, но было бы неплохо, если бы существовало чистое решение, позволяющее просто читать и писать простой XML без ключей!
Если это невозможно, меня также интересуют инструменты, в которых XML-схема является каноническим ресурсом (сначала контракт) - хорошая альтернатива JAXB для C ++. До сих пор я нашел только коммерческие решения, такие как CodeSynthesis XSD. Я бы предпочел решения с открытым исходным кодом. Я пробовал gSoap - но он генерирует действительно некрасивый код, а также специфичен для SOAP.
В отчаянии я также начал искать альтернативные форматы сериализации для протобуферов. Это существует - но только для Java! Меня действительно удивляет, что протоколные буферы, похоже, являются лучшим поддерживаемым форматом обмена данными, чем XML.
Я схожу с ума, просто нахожу библиотек для этого приложения, и мне действительно нужны новые идеи. Кто-нибудь?