TL; DR
Prolog wurde hier nicht erwähnt, aber es ist das beste Format Ich kenne für Daten darstellt. Prolog-Programme beschreiben im Wesentlichen Datenbanken mit komplexen Beziehungen zwischen Entitäten. Prolog ist tot - einfach zu analysieren, wessen wahrscheinlich einziger Rivale S-Ausdrücke in diesem Bereich sind.
Vollversion
Programmierer oft "vergessen", was XML tatsächlich besteht. Bezieht sich normalerweise auf eine sehr kleine Teilmenge von dem, was es ist.XML ist ein sehr komplexes Format mit mindestens diesen Teilen: DTD schema language, XSD schema language, XSLT transformation language, RNG schema language und XPath (plus XQuery) Sprachen - sie alle sind Teil des XML-Standards. Außerdem gibt es einige Apokryphen wie E4X. Jeder von ihnen hat seine eigenen Versionen, einige Überschneidungen, Inkompatibilitäten usw. Sehr wenige XML-Parser in der Wildnis implementieren sie alle. Ganz zu schweigen von den zahlreichen Eigenheiten und Fehlern der beliebten Parser, von denen einige zu bemerkenswerten Sicherheitsproblemen wie https://en.wikipedia.org/wiki/XML_external_entity_attack führen.
Daher ist die Suche nach einem XML Alternative keine sehr gute Idee. Sie möchten wahrscheinlich überhaupt nicht mit XML umgehen.
YAML ist wahrscheinlich die zweitschlechteste Option. Es ist nicht so groß wie XML, aber es wurde auch entworfen, um alle Grundlagen zu überdecken ... mehr als zehn Mal ... auf unterschiedliche und einzigartige Weise, die niemand je erdenken könnte. Ich habe noch von einem richtig funktionierenden YAML-Parser gehört. Ruby, die Sprache, die viel YAML verwendet, hatte berühmt screwed up wegen ihm. Alle YAML-Parser, die ich bis jetzt gesehen habe, sind Kopien von libyaml, die selbst eine Art handschriftlicher Parser sind, mit einem Code, der sehr schwer auf Korrektheit zu überprüfen ist (Funktionen, die Hunderte umfassen) von Linien mit verschachtelten Kontrollfluss). Wie bereits erwähnt, enthält es JSON vollständig ... zusätzlich zu einer Handvoll Unicode-Codiertechniken ... im selben Dokument und wahrscheinlich eine Menge anderer Sachen, von denen Sie nichts hören wollen.
JSON, auf der anderen Seite, ist völlig anders als die anderen beiden. Sie können wahrscheinlich einen JSON-Parser schreiben, während Sie auf das Herunterladen von JSON-Parser-Artefakten von Ihrem Maven-Nexus warten. Es kann sehr wenig tun, aber zumindest weißt du, was es kann. Keine Überraschungen. (Außer einigen Diskrepanzen in Bezug auf Zeichen entkommen in Strings und verdoppelt Codierung). Keine verdeckten Exploits. Sie können keine Kommentare darin schreiben. Mehrzeilige Strings sehen schlecht aus. Was auch immer Sie unter Unterscheidung zwischen Eigenschaften und Attributen meinen, können Sie durch verschachtelte Wörterbücher implementieren.
Angenommen, Sie wollten Recht haben, was XML schadete ... nun, das beliebte Zeug wie YAML oder JSON wird es nicht tun. Irgendwie trennten sich Mode und rationales Denken Mitte der siebziger Jahre. Also musst du mit McCarthy, Hoare, Codd und Kowalski dahin zurückgehen, wo alles begann, herausfinden, was du darstellst, und dann sehen, was die beste Darstellungsmethode für das ist, was du bist versuchen zu repräsentieren :)
JSON stimmt nicht überein. Es unterstützt keine Attribute und Eigenschaften. – rjmunro
Holen Sie sich einen Stift und Papier, und versuchen Sie, eine Syntax zu modellieren, die Attribute, Elemente und Hierarchie unterstützt. Jetzt sehen Sie, wie leserlich Ihre Versuche sind. –
@basel: Sie werden dann Python – makapuf