Dateien dienen nicht der Präsentation der Daten sondern dem Transport

Keineswegs wird in einer Datei bzw. Sequenz eine bestimmte Datenstruktur festgeschrieben.

Diese Demo zeigt, dass eine bestimmte Datentruktur keineswegs an einen bestimmten Dateiaufbau gebunden ist (wie das viele XML-Designer vermeintlich und fälschlicherweise denken). Vielmehr lassen sich aus einer vorgegebenen Bytefolge (Sequenz) verschiedene Datenstrukturen erzeugen und selbstverständlich ist das umkehrbar.

Erzeuge als Datenstruktur:

Vorgeschlagene Datenstruktur

Button klicken...

Erläuterungen

Als Quelle für die Sequenz dient in dieser Demo eine Textarea. Mit blancs als Trennzeichen ergibt sich aus der Sequenz zunächst ein Array. Entscheidend für die letztendlich gewünschte Datenstruktur ist eine bestimmte Gruppierung der einzelnen Array-Elemente. So steht EAV für Entity-Attribute-Value und für diesen abstrakten Datentyp werden stets drei aus der Sequenz gewonnene Array-Elemente zusammengefasst. Das Array bzw. assoziative Array erklärt sich von selbst.

Die Sequenz kann also bei gleicher Datenstruktur ganz unterschiedlich aufgebaut sein, d.h., zum Serialisieren eines Array können völlig unterschiedliche Algorithmen zu Anwendung kommen. In XML könnte das z.B. so aussehen:

<data>
    <value>addr</value>
     <value>name</value>
     <value>Otto</value>
     <value>addr</value>
     <value>vname</value>
     <value>Ernst</value>
     <value>addr</value>
     <value>ort</value>
     <value>Friesland</value>
     <value>addr</value>
     <value>str</value>
     <value>Klippe</value>
    
</data>

Maschinenlesbare Dateien jedoch können erheblich einfacher aufgebaut sein und erzeugt werden. In der Regel wird in Dateien, die sequentiell gelesen werden sollen, mit Offset gearbeitet: Vier Bytes □□□□ codieren beispielsweise zyklisch die Längenangabe für die nachfolgende zu lesende Sequenz:

□□□□addr□□□□name□□□□Otto□□□□addr□□□□vname□□□□Ernst□□□□addr□□□□ort□□□□Friesland□□□□addr□□□□str□□□□Klippe

Damit ergibt sich ein Stream, für welchen sofort nach dem Eintreffen der ersten 4 Bytes mit dem Lesen begonnen werden kann ohne das Ende der Sequenz zu kennen oder abwarten zu müssen. Die Nutzdaten (Arrayelemente) selbst können Bytes aller Oktettenwertigkeiten aneinanderreihen, binary safe werden die Daten bytegenau wiederhergestelt. Es liegt auf der Hand, dass mit textlichen Mitteln (Token) erzeugte Sequenzen wie z.B. XML, JSON keinen binary safe Transport ermöglichen.


Anbieter: nmq​rstx-18­@yahoo.de, die Seite verwendet funktionsbedingt einen Session-Cookie und ist Bestandteil meines nach modernen Aspekten in Perl entwickelten Frameworks.