Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: перегрузка boost::archive::xml_woarchive  (Прочитано 6557 раз)
0 Пользователей и 1 Гость смотрят эту тему.
korbian
Гость
« : 16-05-2007 05:35 » 

Здравствуйте, коллеги.
Как избавить файл сериализованных данных от записей вида:

<boost_serialization signature="serialization::archive" version="3">

при сериализации классов STL к каждому тегу добавляется:

class_id="1" tracking_level="0" version="0"

Не понял

Понимаю, что нужна перегрузка, но никак не пойму от какого класса наследовать свой класс???

в общем, помогите (кто чем может) Улыбаюсь
Записан
Алексей++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 16-05-2007 05:47 » 

можно писать файл самому ) В каком надо формате
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #2 : 16-05-2007 05:51 » 

от первой строки смысла избавляться не вижу
но если так хочется то напиши свой boost::archive::xml_woarchive
вот этот кусок из boost всё обяснит
Код:
template<class Archive>
BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
basic_xml_oarchive<Archive>::init(){
    // xml header
    this->This()->put("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>\n");
    this->This()->put("<!DOCTYPE boost_serialization>\n");
    // xml document wrapper - outer root
    this->This()->put("<boost_serialization");
    write_attribute("signature", ARCHIVE_SIGNATURE());
    write_attribute("version", ARCHIVE_VERSION());
    this->This()->put(">\n");
}
не забуть тогда и входной архив переделать
самое простое решенье это написать собственные сериализаторы для STL контейнеров, а не использовать стандартные

обрати внимание на вот это
http://www.boost.org/libs/serialization/doc/traits.html
там описано как что и зачем.

Один вопрос, зачем? Улыбаюсь
Записан

Странно всё это....
korbian
Гость
« Ответ #3 : 16-05-2007 06:17 » 

Один вопрос, зачем? Улыбаюсь
В академическом плане:
Есть ли смысл через boost::archive::xml_woarchive сериализовать данные в файл, который будут парсить другим приложением, в логиику которого вмешиваться увы уже не получиться. Мне показалось проще всего сериализовать данные в xml (имхо просто), подогнав под "шаблон" свои внутренние структуры. Смущает как раз наличие дополнительных записей в файле. Но использование xml_woarchive - это пока не окончательное решение.
За сылку спасибо, буду думать.
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #4 : 16-05-2007 07:18 » 

обычно если я не понимаю, что и как работает в boost лезу в исходники boost Улыбаюсь
можно прогонять данные через xsl
Записан

Странно всё это....
korbian
Гость
« Ответ #5 : 16-05-2007 07:48 » 

обычно если я не понимаю, что и как работает в boost лезу в исходники boost Улыбаюсь
Согласен, сейчас этим и занимаюсь
можно прогонять данные через xsl
Я не понял, это к чему?
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #6 : 16-05-2007 08:15 » 

это я к тому, что получая на выходе XML ты можешь воспользоваться средствами работы с xsl для фильтрации лишних данных в исходном файле, я не знаток этого дела, но когда-то читал, что можно используя xsl
делать конвертации XML в любой другой формат или в XML с другой структурой
Записан

Странно всё это....
korbian
Гость
« Ответ #7 : 16-05-2007 08:25 » 

Да, xsl возможно подойдет. Но я же писал:
файл, который будут парсить другим приложением, в логиику которого вмешиваться увы уже не получиться.
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #8 : 16-05-2007 08:37 » 

это я понял, это никак не противоречит моему предложению Улыбаюсь
Записан

Странно всё это....
korbian
Гость
« Ответ #9 : 16-05-2007 09:53 » 

Мне кажется нелогичным накручивать xsl поверх сериализации boost.
« Последнее редактирование: 16-05-2007 09:55 от korbian » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines