Самый простой способ разрешить пользователям указывать формат вывода - PullRequest
0 голосов
/ 30 августа 2011

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

Каков наилучший способ решения этой проблемы?Вначале я хотел определить грамматику и написать синтаксический анализатор с нуля.

  • Существуют ли какие-либо бесплатные библиотеки Java, которые могут помочь в анализе пользовательских языков сценариев (форматирования?)?
  • Поскольку у меня уже есть XML, будет ли лучше просто «преобразовать» его с помощью алгоритма поиска и замены?

Я должен указать здесь, что «пользователи» - это другие программисты, поэтому определение простого языка будет правильным, и что вывод является потенциально рекурсивным (представьте, что вывод содержимого каталога в XML).

Просто ищу общий совет в этой области, прежде чем отправиться по неправильному пути.

РЕДАКТИРОВАТЬ: Чтобы уточнить ... Моя ситуация немного уникальна.Приложение выводит координаты и другие данные для загрузки в игровой движок.Кажется, что каждый использует свой собственный, полностью собственный формат в своем движке.Большинство людей не хотят реализовывать анализатор JSON и предпочитают использовать то, что у них уже есть.Другими словами, в интересах моих пользователей иметь полный контроль над выводом, просить их реализовать другой синтаксический анализатор - не вариант .

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Рассматривали ли вы просто использование шаблонизатора, как Velocity или FreeMarker .

0 голосов
/ 30 августа 2011

Если вы планируете предоставлять это как API для нескольких сторон, я бы не советовал допускать чрезмерную настройку, это добавит ненужную сложность вашему продукту и предоставит еще одно место для появления ошибок.

Во-вторых, это увеличит сложность вашей документации и, как побочный эффект, вероятно, приведет к тому, что ваша документация не синхронизируется с API в целом.

Самая большая вещь, которую я бы посоветовал рассмотреть с точки зрения созданияВаш поток легче усваивается, он делает вывод доступным в формате JSON, который поддерживается практически всеми современными языками (я сам использую Gson для Java).

0 голосов
/ 30 августа 2011

Я бы создал бин результата как POJO.

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

* 1005 например *

Result result = logic.getResult();
XMLOutputter.output(result, "myXMLFile.xml");
Format1Outputter.output(result, "myFormat1File.fo1");
Format2Outputter.output(result, "myFormat2File.fo2");
...