Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

если вы ожидаете, что люди создадут/прочитают документ (файлы конфигурации, отчеты и т.д.), тогда вы можете рассмотреть 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 содержит несогласованности (существует даже wiki для поддержания списка ошибок).

XSLT

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

Ответ 2

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

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

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

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

Ответ 3

XML имеет xpath и xquery.

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

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

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

Затем вы можете преобразовать его в любой.

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

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

Ответ 4

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

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