Каковы преимущества и disadvantes yaml по сравнению с xml для Графа объектов de/serialization?

К сожалению, нет «предыдущего» селектора, но вы можете , возможно, получить тот же эффект, используя позиционирование (например, float right). Это зависит от того, что вы пытаетесь сделать.

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

Я использую FontAwesome в этом примере и заменяю между юникодами fa -star-o и fa-star http://fortawesome.github.io/Font-Awesome/

CSS:

.fa {
    display: inline-block;
    font-family: FontAwesome;
    font-style: normal;
    font-weight: normal;
    line-height: 1;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* set all stars to 'empty star' */
.stars-container {
    display: inline-block;      
}   

/* set all stars to 'empty star' */
.stars-container .star {
    float: right;
    display: inline-block;
    padding: 2px;
    color: orange;
    cursor: pointer;

}

.stars-container .star:before {
    content: "\f006"; /* fontAwesome empty star code */
}

/* set hovered star to 'filled star' */
.star:hover:before{
    content: "\f005"; /* fontAwesome filled star code */
}

/* set all stars after hovered to'filled star' 
** it will appear that it selects all after due to positioning */
.star:hover ~ .star:before {
    content: "\f005"; /* fontAwesome filled star code */
}

HTML: (40)

JSFiddle: http://jsfiddle.net/andrewleyva/88j0105g/

21
задан flybywire 18 February 2009 в 14:34
поделиться

3 ответа

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

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

ответ Long

Длина

И 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 необходимо записать программу.

36
ответ дан 29 November 2019 в 20:25
поделиться

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

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

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

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

3
ответ дан 29 November 2019 в 20:25
поделиться

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

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

2
ответ дан 29 November 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: