XML или файл собственного формата? - PullRequest
2 голосов
/ 08 декабря 2008

Когда рекомендуется сохранять информацию в файле XML, а когда - в файле собственного формата?

Для XML (или другого стандарта) я вижу:

  • (+) Стандартный формат.
  • (-) Модифицировать руки утомительно.

Для файлов собственного формата я вижу:

  • (-) Нам нужно создать собственный парсер (нестандартный).
  • (+) Можно легко изменить файлы вручную.

Ответы [ 12 ]

12 голосов
/ 08 декабря 2008

Используйте XML, когда он подходит, различными способами:

  • Необходимо обмениваться между различными приложениями, которые все способны обрабатывать XML
  • Натуральное древовидное строение
  • В первую очередь данные, легко представляемые в виде текста (двоичные данные в текстовых форматах представляют собой небольшой толчок)
  • Расширяемость важна
  • Производительность не критична (синтаксический анализ XML не очень быстрый, хотя, если производительность важна, и вы выбираете XML, ищите быстрый парсер, поскольку существует большая разница между самым быстрым и медленным)
  • Схема может быть предварительно определена, и документы могут быть сверены с ней
  • Более простые форматы (например, пары имя = значение) не обрезают его

В основном, если в XML существует довольно естественное представление вашей модели данных, это может быть самым простым способом обработки. Если вам в конечном итоге придется много возиться с XML, подумайте о других форматах. Обратите внимание, что существует множество других стандартных (или «несколько стандартных» - например, поддерживаемых инструментами на нескольких платформах) форматов, доступных не только для XML.

6 голосов
/ 08 декабря 2008

Для XML я вижу:

  • (+) Стандартный формат.
  • (-) Ручная модификация утомительна.

    Я использую XML только тогда, когда этого требует API.

Для JSON / YAML я вижу:

  • (+) Стандартный формат.
  • (+) Легко изменить вручную.

    Я использую JSON / YAML практически для всего. За исключением случаев, когда интерфейсу требуется что-то еще.

Для CSV я вижу:

  • (+) Стандартный формат.
  • (+) Легко изменить вручную.
  • (-) Немного мрачно, когда имена столбцов неаккуратны или данные не в простой перво-нормальной форме.

    Я использую CSV всякий раз, когда это возможно.

Для языковых сериализаторов я вижу:

  • (+) Стандартный формат для данного языка.
  • (-) почти невозможно изменить вручную.

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

Для файлов собственного формата я вижу:

  • (-) Нам нужно создать собственный парсер (нестандартный).
  • (+) Можно легко изменить файлы вручную.

    Я избегаю изобретать свой собственный формат файла. Я не изобрел свой собственный формат файла в течение многих лет.

3 голосов
/ 08 декабря 2008

XML дает вам возможности XSLT и Xpath, а ваш собственный формат - нет.

2 голосов
/ 08 декабря 2008
1 голос
/ 08 декабря 2008

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

Edit:

Я забыл про текст в целом и Unicode в частности: если значительная часть моих данных - это текст (особенно размеченный текст), и если мне нужно поддерживать Unicode (что обычно делает любое приложение, работающее с блоками текста) ), который перемещает XML вверх по списку в спешке.

1 голос
/ 08 декабря 2008

(-) Модифицировать руки утомительно.

Я думаю, что это сильно зависит от определяемого вами XML / собственного формата. Если вы используете, например, двоичный формат (который может быть очень эффективным) почти невозможно будет вручную редактировать файл.

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

  • производительности
  • совместимость с другими компонентами
  • возможность ручного редактирования файлов (отладка)
  • проблемы обратной совместимости
  • и т.д.

Если вы собираетесь использовать текстовый формат, я бы выбрал решение на основе XML в большинстве случаев.

1 голос
/ 08 декабря 2008

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

0 голосов
/ 08 декабря 2008

Это действительно зависит от ваших данных.

См. ESR Искусство программирования Unix: Ch. 5 Текстуальность - метаформаты файла данных . Эта цитата о суммировании:

XML может быть упрощающим или усложняющим. Вокруг него много ажиотажа, но не становитесь жертвой моды, приняв или отвергнув его некритически. Тщательно выбирайте и помните принцип KISS.

XML, безусловно, имеет свое применение, и это замечательно для выражения сложных иерархических наборов данных, но это излишне, если все, что вам нужно сделать, это хранить полдюжины пар key:value и не подходит для основанных на строках табличные данные.

0 голосов
/ 08 декабря 2008

XML, как правило, мой первый выбор. Частично это связано с тем, что это стандартный формат файла конфигурации для моей платформы (.NET). Я обнаружил, что почти исключительно четко определенный XML-файл лучше, чем настроенный формат. Я также буду уклоняться от CSV и плоских файлов, если только они не являются требованием проекта.

Мои причины для выбора XML (обратите внимание, что некоторые из них зависят от платформы):

  • Стандартная реализация для моей платформы. Много инструментов для работы с XML, XSD, XSLT.

  • Применение схемы (XSD). Позволяет принудительно настроить структуру файла. Очень полезно, когда формат используется другими.

  • Навигация (XPath, Linq to Xml). Простота извлечения и записи узлов и их атрибутов. Меньший риск при написании кода такого типа по сравнению с читателями и писателями.

  • Transformable (XSLT). Может конвертировать файл в другие представления представления без особых усилий.

  • Совместимо. Структура XML является естественной для описания объектов. Объекты, сериализованные в XML, легко переносимы и могут существовать вне границ приложения.

  • Легко редактируемые. Четко определенный XML легко читается и легко редактируется. Для начала достаточно простого текстового редактора, и существует множество инструментов для редактирования XML с различными функциями и ценами.

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

0 голосов
/ 08 декабря 2008

Как указано annakata , вы можете использовать XSLT и XPATH, если выберете маршрут XML. Я обнаружил, что при грамотном использовании XSLT вы можете создавать «самодокументируемые» файлы конфигурации.

Создав файл .xsl и добавив такое объявление в файл XML, пользователь может просто дважды щелкнуть файл XML и просмотреть результаты преобразования в своем браузере (я знаю, что IE и Firefox поддерживают это )

<?xml-stylesheet type="text/xsl" href="config-documentation.xsl"?>

Просто подумал, что это может быть полезно.

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