TL; DR
Пролог не был упомянут здесь, но это лучший формат я знаю для представления данных. Программы Prolog, по сути, описывают базы данных со сложными отношениями между сущностями. Пролог мертв - просто разобрать, чей, вероятно, только соперник - это S-выражения в этом домене.
Полная версия
Программисты часто "забывают", что XML на самом деле состоит из. Обычно речь идет о очень маленьком подмножестве того, что есть.XML - очень сложный формат, по крайней мере, эти части: DTD schema language, XSD schema language, XSLT transformation language, RNG schema language и XPath (плюс XQuery) языки - все они являются неотъемлемой частью стандарта XML. Кроме того, есть некоторые апокрифы, такие как E4X. У каждого из них есть свои версии, довольно много совпадений, несовместимости и т. Д. Очень мало парсеров XML в дикой природе реализуют все из них. Не говоря уже о многочисленных причудах и ошибках популярных анализов, некоторые из которых приводят к заметным проблемам безопасности, таким как https://en.wikipedia.org/wiki/XML_external_entity_attack.
Поэтому, ища XML альтернатива - не очень хорошая идея. Вероятно, вы вообще не хотите иметь дело с подобными XML.
YAML, возможно, второй худший вариант. Он не такой большой, как XML, но он также был разработан для того, чтобы охватить все базы ... более десяти раз каждый ... по-разному и уникальным, о которых никто никогда не мог себе представить. Я еще не слышал о правильно работающем парсере YAML. Ruby, язык, который использует YAML много, был классно screwed up из-за этого. Все партизаны YAML, которые я видел на сегодняшний день, являются копиями libyaml, которые сами по себе представляют собой написанный вручную (не сгенерированный из формального описания) парсер с кодом, который очень сложно проверить на правильность (функции, которые охватывают сотни линий со свернутым управляющим потоком). Как уже упоминалось, он полностью содержит JSON в нем ... помимо нескольких методов кодирования Unicode ... внутри того же документа и, вероятно, множество других вещей, о которых вы не хотите слышать.
JSON, с другой стороны, совершенно не похож на другие два. Вероятно, вы можете написать парсер JSON, ожидая загрузки артефакта парсера JSON с вашего Maven Nexus. Это может сделать очень мало, но, по крайней мере, вы знаете, на что он способен. Без сюрпризов. (За исключением некоторых расхождений, связанных с символом, ускоряющимся в строках и удвоением кодирования). Никаких скрытых подвигов. Вы не можете писать в нем комментарии. Многострочные строки выглядят плохо. Независимо от того, что вы подразумеваете под различием свойств и атрибутов, вы можете реализовать более вложенные словари.
Предположим, хотя вы хотели, чтобы правильно испортить XML ... ну, тогда популярный материал, такой как YAML или JSON, не сделает этого. Каким-то образом мода и рациональное мышление расстались в программировании в середине семидесятых. Итак, вам нужно будет вернуться туда, где все началось с Маккарти, Хоара, Кодда и Ковальского, выяснить, что вы пытаетесь представить, а затем посмотреть, какая техника наилучшего представления есть для всего, что вы есть пытаясь представить :)
JSON не соответствует. Он не поддерживает «атрибуты, а также свойства». – rjmunro 2008-09-24 09:55:21
Получите карандаш и бумагу и попробуйте макет синтаксиса, который поддерживает атрибуты, элементы и иерархию. Теперь посмотрим, как люди читают ваши попытки. – 2013-06-28 05:59:06
@basel: вы получите python – makapuf 2016-06-09 08:31:10