2009-09-04 3 views
2

Я использую C++ из Mingw, которая является версией Windows GNC C++.Сериализация/десериализация XML в C++

Что я хочу сделать: сериализуйте объект C++ в XML-файл и десериализуйте объект из XML-файла на лету. Я проверяю TinyXML. Это очень полезно, и (пожалуйста, поправьте меня, если я неправильно понял) он в основном добавляет все узлы во время обработки и, наконец, помещает их в файл в один кусок, используя функцию TixmlDocument :: saveToFile (имя файла).

Я работаю над обработкой в ​​реальном времени и как я могу писать в файл на лету и добавлять в файл следующий результат?

Спасибо.

ответ

2

Я заметил, что каждый класс TiXmlBase имеет метод печати, а также поддерживает потоковое воспроизведение строк и потоков.

Вы можете последовательно перемещать новые части документа и выводить эти части, поскольку они добавлены, может быть?

Дайте ему попробовать .....

Tony

+0

Печать() работает очень хорошо, спасибо Тони! – Lily

2

BOOST имеет очень хороший сериализации/десериализации LIB BOOST.Serialization.
Если вы передадите свои объекты на ускорение xml archive, он будет передавать их в формате xml. Если xml является большим или замедляется, вам нужно только изменить архив в текстовом или двоичном архиве, чтобы изменить формат потоковой передачи.

0

Я использую gSOAP для этой цели. Это, вероятно, слишком мощно для просто сериализации XML, но зная, что это может сделать намного больше, мне не нужно рассматривать другие решения для более продвинутых проектов, так как он также поддерживает WSDL, SOAP, XML-RPC и JSON. Также подходит для встроенных и небольших устройств, поскольку XML - это просто переходный формат проводов и не хранится в DOM или что-то в памяти.