Как создать свой формат файла или как сохранить 300 вопросов с вариантами в одном файле?

Нужно сохранить 300-500 вопросов с 5 вариантами в одном файле так, чтобы легко достать случайные 25 вопросов с (перемешанными)вариантами. В текстовом файле не получится - в тесте может быть картины, формулы. Как быть? Для открытия теста будет написано специальная программа. Моя задача: генерировать из ms word тест-файл, если понадобится в новом формате. Я в этом абсолютно ничего не знаю. В каком направлений двигаться? О чем надо читать?
P.S. "Генератор-сайт" будет написано на php
  • Вопрос задан
  • 5295 просмотров
Решения вопроса 5
hrls
@hrls
Не вижу проблем с хранением всего в JSON-файле с кодированием бинарных данных в Base64 (так изображения хранить проще простого; про формулы в конце). JSON парсить в php (да и вообще) – проще некуда. Сохранение в JSON-файл из *.doc/docx можно реализовать макросом-скриптом на Visual Basic за половину рабочего дня.
Если не планируется какое либо распространение этого софта и заранее известно окружение (например система тестирования в университете с определенной версией MS Office =) ), то можно использовать автоматизацию приложений MS Office. Насколько помню, на том же Delphi довольно просто прикручивался кастомный GUI к документу MS Office при наличии хоть какого опыта работы с технологией COM. В таком случае достаточно будет лишь правильно разметить документ. С веб-версией, в случае ее необходимости, придется обращаться к .NET-платформе (хотя наверняка в MSDN уже есть мануал с сорцами на эту тему).
И стоит напомнить: *.docx – это не более чем переименованный *.zip с файлами в xml-формате. Не знаю как там хранятся изображения, но парсить распакованную структуру не должно составить большого труда средствами любого языка программирования.
Что является формулами я не смог понять из вопроса. Если объекты *math* или как там в MS Office они зовуться, то тут нужно искать решение. Например отрендерить предварительно =)). Вроде когда из .docx импортировали в *.doc для Office 2003 так и было.
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Сделайте все в разных файлах и соберите в zip, как это делается в docx/xlsx. Это из простых вариантов.
Ответ написан
Может лучше смотреть в сторону Баз Данных?
Ответ написан
barkalov
@barkalov
Главный вопрос — не количество вариантов и вопросов, а какие возможности разметки хотите реализовать? Вы упомянули формулы, картинки. В каком именно формате планируете хранить содержимое вопроса?

Если это вордовская разметка, то может и хранить всё как в ворде - зипованые xml. Если формат html - то и хранить в нём (фото и прочие бинарные файлы в нем-же, в base64).

Для индекса и быстрого поиска по нему ("чтобы легко достать случайные 25 вопросов") можно построить json или xml.

Или воспользуйтесь SQLite - просто сложите всё туда. Но всё равно, сначала необходимо определиться с форматом контейнера вопроса.
Ответ написан
Комментировать
RomanAkaMagician
@RomanAkaMagician
Как же иногда люди сами себе усложняют задачу, возьмите SQLite и не мучайтесь, это полностью покрывает все ваши требования в вопросе.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы