Каковы преимущества и недостатки yaml против xml для де-сериализации графа объектов? - PullRequest
21 голосов
/ 18 февраля 2009

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

Ответы [ 4 ]

36 голосов
/ 19 февраля 2009

Краткий ответ

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

Длинный ответ

Длина

И XML, и YAML примерно одинаковы. Хорошие библиотеки XML могут пропускать все пробелы, в то время как для YAML это требуется. Сложный YAML содержит много отступов (не используйте вкладки!)

Отказ сети

Часть документа YAML часто является действительным документом, поэтому, если документ YAML является неполным, не существует автоматического способа его обнаружения. Синтаксический анализатор XML всегда проверяет, правильно ли сформирован документ, и автоматически проверяет правильность схемы.

Поддержка языков

Многие основные языки программирования поддерживают YAML и XML.

Общие знания

Вам не нужно объяснять разработчику (даже младшему), что такое XML. YAML еще не так широко используется.

Схема

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

Синтаксис

XML очень богат: пространства имен, сущности, атрибуты.

Внешние зависимости

Java и Python имеют поддержку XML в стандартных библиотеках. YAML требует внешней зависимости для этих языков.

Зрелость

XML-спецификация более старая, и она надежна; в то время как YAML все еще находится в стадии строительства. YAML 1.1 содержит несоответствия (есть даже вики для ведения списка ошибок).

1043 * XSLT * Если вам нужно преобразовать документ XML в другой формат (XML, HTML, YAML, PDF), вы можете использовать XSLT, в то время как для YAML вам нужно написать программу.

3 голосов
/ 14 ноября 2014

XML имеет xpath и xquery.

Но YAML имеет сложные ключи и позволяет вам копировать одно значение во многие места с псевдонимами (& * синтаксис).

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

На самом деле сила YAML в человеке пригодность для записи . Если вы на iPhone набираете быстрый бит данных при разработке модели данных или чего-то подобного, YAML гораздо проще набирать. Псевдонимы для этого хороши.

Тогда вы можете преобразовать его во что угодно.

Более продвинутые функции YAML, такие как строгая типизация и теги, никогда не используются. Ребята из YAML в настоящее время обсуждают выпуск «микро-YAML», чтобы конкурировать с JSON, для тех из нас, кто использует его в основном просто как более чистый JSON с псевдонимами.

Но XML лучше как язык разметки, где вы хотите визуально различать, какие части данных видны конечному пользователю, как указывал кто-то другой.

3 голосов
/ 24 февраля 2009

Я согласен: YAML более читабелен и, кажется, хорошо подходит, скажем, для файлов конфигурации dev-read / writeable. Но для межмашинного общения пользы мало. Кроме того, для текстовой разметки (традиционная сильная сторона XML, такая как xhtml, docbook), лучше использовать xml.

Специально для сериализации объектов я не могу придумать вескую причину использовать YAML.

На самом деле, я бы предложил вместо этого рассмотреть JSON: он основан на объектной (или struct, так как поведение отсутствует) модели, а не на иерархических (xml) или реляционных (SQL) моделях. Из-за этого это немного более естественно подходит для данных объекта. Но XML прекрасно работает, и есть много хороших инструментов.

Последнее: термины «долгосрочный» и «сериализация объектов» не смешиваются. Последнее подразумевает тесную связь: ваши объекты меняются, также как и сериализация. Фактическая сериализация объекта не должна использоваться для хранения данных, привязка / отображение данных более уместны. Но может случиться так, что вы используете сериализацию в смысле «хранения / восстановления данных с использованием удобных оболочек объектов»; если так, то все в порядке.

2 голосов
/ 18 февраля 2009

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

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

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