Was sind gute alternative Datenformate XML?
XML, zugegeben, ist sehr nützlich, kann aber sehr ausführlich. Welche alternativen gibt es und sind Sie spezialisiert für einen bestimmten Zweck? Bibliothek unterstützen zu befragen, die Inhalte leicht ist ein großer plus-Punkt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint eine Menge von multi-Plattform-Unterstützung für JSON.
Jeff ' s Artikel über Der Winkel Steuern fasst eine Reihe von alternativen (gut, hauptsächlich YAML) und führte mich zu der wiki-Artikel auf leichte markup-Sprachen.
Update: Obwohl YAML ist eine mögliche "alternative zu XML" für einige Anwendungen, die zwei sind nicht, wie ich zuerst dachte, isomorph.
In der Tat, es "ain' T markup language."
Darüber hinaus YAML ain ' T so "leicht" wie es scheint. Für Dokumente, die dargestellt werden kann in einfache XML (wie von Jeff Beispiel), YAML ist deutlich weniger ausführlich. Aber YAML bietet viele andere spezialisierte Strukturen, Anwerbung, viele weitere Figuren und Sequenzen, als reserviert sind, die durch die XML.
Bottom line, wenn Sie auf der Suche für XML-ohne-Winkel-Klammern, YAML ain ' T it.
Vergessen Sie nicht über YAML!
JSON scheint besser zu unterstützen, obwohl. Zum Beispiel, die Prototype JS Bibliothek hat eine ausgezeichnete eingebaute JSON-Funktionen.
Ich würde nicht entlassen, nur-text, wie CSV-oder tab-delimited.
Im HDF5 ist ein sehr kompaktes Datenformat mit einigen Eigenschaften, die ähnlich wie xml. Die .net-Bibliotheken lassen viel zu wünschen übrig, aber das format skaliert sehr gut sowohl in Bezug auf Größe und Leistung.
Meine Arbeit mit XML ist fast ausschließlich mit dem document-centric XML, das Modell muss lange Sequenzen beliebig geschachtelte Strukturen. Ich habe nicht verwendet JSON noch nicht, aber mein Eindruck ist, dass es ist umständlich zu bedienen mit Dokument-Daten, aber gut angepasst und auch elegante für die Verwendung mit record-Daten. Betrachten Sie die Form Ihrer Daten, wenn Sie Ihre Entscheidung treffen.
Könnten Sie versuchen, google protobufs. Es ist viel schneller als XML. Es gibt libraries, die in C, C++, C#, Java und Python (es gibt alpha-versons für ruby und perl). Aber es ist binären.
S-Expressions arbeiten toll, wenn Sie nicht brauchen, um anwenden von Attributen auf die Elemente. Eine weitere alternative ist YAML.
XML wird oft verwendet für die Konfiguration, und in diesem Fall gibt es eine andere einfache Speicher-Formate, die Häufig verwendet werden (weniger Dokument-orientiert):
Gibt es verschiedene Möglichkeiten, für das Lesen und schreiben, je nach Plattform und Sprache.
Was willst du mit den Daten machen? Speichern? Geben Sie es herum? Ihn anzeigen? Diese Fragen sollte Ihre Suche nach einer geeigneten Technologie. Einfach Fragen, wie sollten Sie das format der Daten ist wie zu Fragen, was Sprache, sollten Sie das Programm ohne die Angabe, was Sie erreichen möchten.
Für die meisten Daten, die Aufgaben, sowie Dr. Codd hat die Heilung: http://en.wikipedia.org/wiki/Edgar_F._Codd. Datenbanken sollten in der Lage sein zu tun, gerade über alles, was Sie im Sinn haben.
Wenn Sie ' re passing es um plädiere ich Klartext. Wenn Sie Rollen Sie Ihre eigenen binären format der Daten geht Weg, wenn dein parser geht Weg.
Klartext, die tiefer gehende Frage ist, wo die Metadaten. Sollte es extern sein, um die Daten-Datei, oder interne ("selbstbeschreibend").
Beispielsweise XML ist text, aber so ist source code. Mit einer Quelldatei, es ist eine Spezifikation, die geht in großen detail, die syntax und die Semantik, während XML ist soll sein, sich selbst zu beschreiben. Das problem ist, dass es nicht so ist. Außerdem entwickelte es sich direkt aus der Dokument-Präsentation und markup, aber es wird nun missbraucht für alle möglichen Arten von Daten-Serialisierung, übertragung und Speicherung.
TOML ist das neue große Ding. Es hat die Nettigkeit von YAML ohne die großen spec. Es reicht eine übliche und bekannte Konfiguration-Datei-format. Es ist direkt Analog zu (und übersetzbar zu) JSON. Unterstützung in allen großen Sprachen. Erstellt von Github co-Gründer/Präsident Tom und narzißtisch genannt. Echt genial. Give it a shot!
Probe TOML:
Der Vollständigkeit halber erwähne ich Edifact, für die ich schrieb eine Schnittstelle vor langer Zeit.
Ich bin wirklich auf der Suche nach alternativen, die eine definierte Struktur und (cross-Plattform -, multi-language) - Bibliothek unterstützt. Ich bin interessiert an verschiedenen Bauformen und Ihre vor-und Nachteile. Ich mag die Idee von Formaten, text-und "binary" (compact, "kompiliert", schnellen I/O, kleiner footprint) - format. Der Vorteil von Bibliotheken ist, dass Sie führen die Analyse und vielleicht zusätzliche Daten-manipulation/- überprüfung für Sie.
Obwohl gesagt haben, dass, es ist definitiv eine Verwendung für einfache Formate wie .ini .plist-und CSV-etc. Sie sollten nicht immer mit dem hammer knacken einer Nuss.
Aber zu welchem Preis?
Ich bin für JSON in vielen Situationen, besonders dort, wo Gewicht oder client-Seite arbeiten, ist ein Anliegen, aber Weg von XML-verliert Lesbarkeit (so wichtig in diesen config-Dateien) und die Stromversorgung von morgen-problem-Lösungen wie XSLT und XPath. Wirklich sicher sein, Wann und warum Sie Weg: es ist ein de-facto-standard für einen Grund.
(beiseite: meine Gewohnheit ist die Verwendung von XML-intern und-Transformation, um JSON-wo ist die gewünschte Ausgabe)
Ketzerei! XML ist der König der Daten.
Sagen Sie Nein zu den Usurpatoren, Weg mit Ihren Köpfen!
Es Lebe XML!
Aber im ernst, wenn nur Daten benötigen, die Json verwenden, für die Unterstützung und Eleganz, aber wenn Sie benötigen, formatieren ,xpath-ähnliche Abfragen, um zusätzliche Metadaten, etc... - Stick mit XML -
Hinweis: ich benutze für Xml-configs system Gebäude-code-Generierung und ähnliche Aufgaben, aber Json für Rpc,Sql für Abfragen und Beharrlichkeit, und schließlich Yaml hier und da für die Anmeldung und kurze Aufgaben, in anderen Worten, wählen Sie die appriopiate format für die Notwendigkeit.
Einfache Deklarative Sprache ist eine schöne alternative zu XML, die für Allgemeine Aufgaben wie die Serialisierung und Konfiguration. Es stellt eine C# - und Java-parser-Bibliothek. Ich denke, es zeichnet sich bei der Angabe aller Arten von Metadaten, ohne die XML Ausführlichkeit.
JSON ist gültig YAML das könnte sehr nützlich sein. Zwei für eins!
Wenn Sie Fragen, die in der Perspektive einer DSL, Guile Scheme helfen könnte, wie bereits vorgeschlagen, mit der S-Ausdrücke.
Persönlich benutze ich auch JSON für AJAX-Transaktionen.
XML ist in Ordnung für text-markup, aber für den Allgemeinen Strukturen der Serialisierung ist eine ganz schlechte option, wo JSON ist viel besser geeignet.
Alles, was Sie wollen, solange es nicht ASN.1
JSON kann in vielerlei Hinsicht verwendet werden, aber es ist besonders gut geeignet für den Einsatz mit MySQL-Tabellen finde ich. Es funktioniert sehr gut mit Android als auch (GSON-Bibliothek oder JSON). Darüber hinaus ist es effektiv bei der übertragung von kleinen bits von Daten, die einzeln oder als arrays.
Für die Speicherung von code-Daten, LES (Loyc Expression Syntax) ist ein angehender alternative. Ich habe bemerkt, eine Menge Leute verwenden für XML-code-ähnliche Konstrukte, wie den Bau von Systemen, die support-Bedingungen, Befehl Aufrufe, manchmal sogar Schleifen. Diese Arten von Dingen, die natürlich Aussehen in LES:
Es nicht die großen tool-Unterstützung noch nicht, aber derzeit die einzige LES-Bibliothek für C#. Derzeit nur eine app bekannt ist, zu verwenden, LES: LLLPG.
In der Theorie könnten Sie Dateien für Daten und markup, aber es gibt keine standards für die Art, das zu tun:
Wenn jemand auf der Suche weniger ausführliche alternative zu XML, die mehr oder weniger isomorph zu XML, dann gibt es AXON. Um zu erklären, betrachten die Beispiele von äquivalenten Darstellungen in XML-und AXON. Es gibt auch python-Bibliothek pyaxon, dass die Unterstützung AXON-format.
XML
AXON
XML
AXON
XML
AXON
Zuliebe erwähnen... haben Sie einen Blick auf meine Vorschlag:
http://igagis.github.io/stob/
Es ist sehr einfach und ist nicht overloadad mit der Vielfalt von speziellen Symbolen, nur {} und "" im Grunde.
Unterstützt C++ - Stil-Kommentare.
Gibt es C++ -, C# - und Java-Bibliotheken.
Beispiel: