Каковы хорошие альтернативные форматы данных XML? - PullRequest
19 голосов
/ 04 сентября 2008

XML, предоставленный, очень полезен, но может быть довольно многословным. Какие есть альтернативы и специализируются ли они для какой-либо конкретной цели? Поддержка библиотеки для простого опроса содержимого является большим плюсом.

Ответы [ 25 ]

18 голосов
/ 04 сентября 2008

Похоже, существует много многоплатформенной поддержки для JSON .

13 голосов
/ 04 сентября 2008

Статья Джеффа о Угловом налоговом скобке обобщает ряд альтернатив (ну, в основном, YAML) и привела меня к вики-статье о легких языках разметки .

Обновление: Хотя YAML является возможной "альтернативой XML" для некоторых приложений, эти два, как я сначала подумал, не изоморфны.

Действительно, это «не язык разметки».

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

Итог, если вы ищете XML без угловых скобок, YAML не так.

9 голосов
/ 04 сентября 2008

Не забудьте про YAML !

JSON, похоже, лучше поддерживает. Например, библиотека Prototype JS имеет превосходные встроенные функции JSON.

5 голосов
/ 04 сентября 2008

Я бы не отказался от простого текста, такого как CSV или табуляции.

4 голосов
/ 11 ноября 2008

Моя работа с XML почти исключительно с документ-ориентированным XML, который должен моделировать длинные последовательности произвольно вложенных структур. Я еще не использовал JSON, но у меня сложилось впечатление, что его неудобно использовать с данными, похожими на документы, но хорошо адаптированными и даже элегантными для использования с данными, похожими на записи. При принятии решения учитывайте форму ваших данных.

4 голосов
/ 09 сентября 2008

HDF5 - это очень компактный формат данных с некоторыми характеристиками, похожими на xml. Библиотеки .net оставляют желать лучшего, но формат очень хорошо масштабируется как с точки зрения размера, так и производительности.

4 голосов
/ 14 ноября 2008

Вы можете попробовать Google protobufs . Это намного быстрее, чем XML. Для этого есть библиотеки на C, C ++, C #, Java и Python (есть альфа-версии для ruby ​​и perl). Но это двоичный файл.

2 голосов
/ 04 сентября 2008

S-выражения отлично работают, если вам не нужно применять атрибуты к элементам. Другой альтернативой является YAML.

2 голосов
/ 07 марта 2014

TOML - это новая большая вещь. У этого есть прелесть YAML без большой спецификации. Он расширяет общий и привычный формат файла конфигурации. Это прямо аналогично (и переводится) JSON. Имеет поддержку на всех больших языках. Создано соучредителем / президентом Github Томом и нарциссически названным. Это потрясающе. Дайте ему шанс!

Образец TOML:

# This is a TOML document. Boom.

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
organization = "GitHub"
bio = "GitHub Cofounder & CEO\nLikes tater tots and beer."
dob = 1979-05-27T07:32:00Z # First class dates? Why not?

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

  # You can indent as you please. Tabs or spaces. TOML don't care.
  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

[clients]
data = [ ["gamma", "delta"], [1, 2] ]

# Line breaks are OK when inside arrays
hosts = [
  "alpha",
  "omega"
]
2 голосов
/ 04 сентября 2008

Что вы хотите сделать с данными? Хранить это? Передать это? Покажите это? Эти вопросы должны стимулировать ваш поиск подходящей технологии. Просто спросить, как вам следует форматировать ваши данные, все равно, что спросить, на каком языке вы должны программировать, без указания того, чего вы хотите достичь.

Для большинства задач, связанных с данными, хорошо, что у доктора Кодда есть лекарство: http://en.wikipedia.org/wiki/Edgar_F._Codd. Базы данных должны уметь делать практически все, что вы задумываете.

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

При использовании простого текста более глубокий вопрос заключается в том, куда поместить метаданные. Должен ли он быть внешним по отношению к файлу данных или внутренним («самоописание»).

Например, XML - это простой текст, как и исходный код. С исходным файлом есть спецификация, которая детально описывает синтаксис и семантику, тогда как XML предполагает для самоописания. Проблема в том, что это не так. Кроме того, он эволюционировал прямо из представления и разметки документов, но в настоящее время злоупотребляет всеми видами сериализации, передачи и хранения данных.

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