Библиотеки, которые помогают переводить или преобразовывать форматы файлов в другие форматы файлов.

Мне нужно преобразовать файлы генеалогии в формат файла OpenGen XML и обратно. Достаточно просто, я могу написать код Java для анализа определенного файла и вывода файла OpenGen. Если кто-то использует Java в своем проекте, он может использовать нашу библиотеку. Если кто-то не использует Java в своем проекте, он может либо портировать наш код перевода, либо запускать наше Java-приложение извне.

Поскольку это должно быть довольно распространенной потребностью, я надеюсь, что есть механизм, который облегчит эту задачу. Идеальное решение заключается в том, что я могу создать файл, содержащий правила/сопоставления для перевода между одним форматом файла и нашим форматом. Затем этот файл сопоставления распространяется, чтобы любой другой мог использовать одну из многих библиотек, которые могут выполнять перевод с использованием этого файла сопоставления. Таким образом, переводить стало намного проще, и теперь каждый может выполнять переводы на свой язык/платформу по своему выбору.

Я предполагаю, что в нашем случае файл сопоставления будет немного сложным, поскольку нужно иметь дело как минимум с иерархиями. Я предполагаю, что еще больше усложняет ситуацию то, что некоторые форматы генеалогических файлов являются двоичными...

Существует ли такой механизм? Каков наилучший подход?


person at.    schedule 05.01.2011    source источник


Ответы (1)


Если исходным языком всегда является XML, вы можете использовать XSLT или CDuce.

В противном случае вам понадобится приличная среда синтаксического анализа и красивой печати, такая как Antlr, и будьте готовы приложить много усилий. Для некоторых тривиальных случаев проще реализовать собственный анализатор Packrat на основе комбинатора.

person SK-logic    schedule 05.01.2011
comment
Формат исходного файла редко бывает XML, как я упоминал в вопросе, для некоторых форматов файлов он даже двоичный ... Я проверяю ANTLR, спасибо. На первый взгляд это выглядит как хороший инструмент для анализа файла, учитывая грамматику, но это всего лишь Java, и мне еще нужно реализовать процесс перевода. - person at.; 05.01.2011
comment
Сам Antlr написан на Java, но предназначен для разных платформ. - person SK-logic; 06.01.2011