« Kursstart

Alternativen zu XML

Bevor wir uns weiter mit XML beschäftigen, will ich auf Alternativen aufmerksam machen und auch einige Pro und Kontra benennen.

JSON

Ist sehr populär, weil es ein kompaktes, einfaches (Ansichtsache) Format darstellt. Aber ein Vergleich der Parser zeigt, das es ein schlecht implementierter Standard ist und man den Datenaustausch damit gut planen sollte.

http://seriot.ch/parsing_json.html

YAML

YAML ist ein rekursives Akronym für „YAML Ain’t Markup Language“ (ursprünglich „Yet Another Markup Language“).

YAML ist eine vereinfachte Auszeichnungssprache (englisch markup language) zur Datenserialisierung, angelehnt an XML (ursprünglich) und an die Datenstrukturen in den Sprachen Perl, Python und C sowie dem in RFC 2822 vorgestellten E-Mail-Format. Die Idee zu YAML stammt von Clark Evans, die Spezifikation wurde von ihm selbst, Brian Ingerson und Oren Ben-Kiki erstellt.

Quelle:https://de.wikipedia.org/wiki/YAML

ProtoBuf (Protocol Buffers)

Website:https://developers.google.com/protocol-buffers/

Weil andere Austauschformate immer noch Schwachstellen aufweisen, wurde eine allgemeine Austauschvariante entwickelt. Interessant ist die folgende Anmerkung von der Website über Alternativen zu ProtoBuf:

Zitat:

Serialize the data to XML. This approach can be very attractive since XML is (sort of) human readable and there are binding libraries for lots of languages. This can be a good choice if you want to share data with other applications/projects. However, XML is notoriously space intensive, and encoding/decoding it can impose a huge performance penalty on applications. Also, navigating an XML DOM tree is considerably more complicated than navigating simple fields in a class normally would be.

Quelle:https://developers.google.com/protocol-buffers/docs/pythontutorial

Vergleich JSON – XML

Merkmal JSON XML Anmerkung
Format Text    
    Text Untermenge von SGML
Datei-Erweiterung json xml, xsl, xsd… Das X in der Dateierweiterung ist ein Indiz für XML. Komplexe XML-Strukturen werden oft In zip-Paketen verwaltet. Beispiele: odf, docx
Medientyp application/json application/xml  
Standard als Draft für IETF (Version7)   Stand: 04/2018
    W3C-Standard seit: 10. Februar 1998
Lesbarkeit Mensch Mensch  
  Maschine Maschine  
self describing Aber: keine Kommentare <!– Kommentar –>  
Konvertierung      
    andere Textformate XML, CSV, JSON, HTML, …
Syntax Schlüssel-Wert-Paare    
    Elemente Ergänzung durch Attribute als Schlüssel-Wert-Paare;
Type-Definitionen {} = Objekt, [] = Array   direkte Umwandlung in JavaScript-Objekte
    keine Typdefinition/Schema (XSD) Standard-Typen oder selbst definierte Typen
Einfaches Beispiel {„name“:“Peter“} <name>Peter</peter> oder: <p name=“Peter“ />
Programmiersprachen viele viele  
Datenbanken Key-Value-Stores, Document-Stores   z.B. MongoDB, CouchDB
Datenbanken   XML-Datentyp z.B. Oracle, Postgres
Parser JavaScript spezielle XML-Parser DOM oder SAX-Parser für viele Programmiersprachen
Umwandlung

Object -> String: json.stringify()

String -> Object: json.parse()

  vergleichbare Methoden werden von allen Programmiersprachen implementiert
Spezialversionen JSONP    
    OWL, RDF viele domainspezifische Varianten