CLARC C4 Exchange XML Format

Übersicht

Das CLARC C4 Exchange Format ist ein auf XML basierendes Format, welches für den Austausch von Konfigurationsdaten entwickelt und konzipiert worden ist.

In diesem Umfeld wird es auch als Backupdatei für gelöschte Inhalte verwendet. Wird beispielsweise im C4 ein Knoten oder eine Property gelöscht, wird automatisch ein Backup im Ordner <clarc>\sys\backup angelegt, welches später ggf. für ein Restore wieder importiert werden kann.

Aufbau

Als XML-Encoding sind folgende Werte gültig:

  • ISO8859-1
  • UTF-8 (Standard)
  • UTF-16

Das File benötigt keine Datei-Header Information (BOM) zum enthaltenen Encoding Typ. Hierzu wird einzig das XML Encoding Attribut verwendet.

Das XML-Root-Element hat den festen Namen „c4Document“. Der „Type“ muss einer der folgenden Werte haben: „Default“ oder „Package“. Ist das Dokument ein Paket, müssen weitere Pflichtangaben gemacht werden: PackageName, PackageVersion, PackageDate, PackageId, Hash und ReleaseRequired. Als zusätzliches Attribut wird die FormatVersion erfordert. Gültige Werte sind 1.2, 1.3 und 1.4 (aktuell).

Die Konfigurationsstruktur ist in ein oder mehrere Content-Bereiche aufgeteilt. Jeder Content-Bereich besitzt einen Basisknoten (RootNode) und wird mittels des Knotens „Key“ weiter verschachtelt. Unterhalb jedes Schlüssels kann es n Eigenschaften (Properties) geben.

Properties oder Eigenschaften sind durch Knoten mit dem Namen „Property“ definiert. Diese besitzen die Attribute „Name“, „DataType“ und optional "User", "Date" und "Compressed". Der Inhalt des Knotens ist der eigentliche Feldinhalt im jeweiligen Encoding Format.

User ist der Änderungsuser und Date das Änderungsdatum. Compressed kommt im Falle von Binärdaten zum Einsatz (ZLib Compression).

Nachfolgende Datentypen sind für „DataType“ zulässig.

String-Typen:

  • UCS2STR (Unicode String)
  • UCS4STR (Unicode String)
  • STRING

Boolean-Typen:

  • BOOLEAN

DateTime-Typen:

  • DATE

Fließkomma-Typen:

  • FLOAT
  • SINGLE
  • DOUBLE

Ganzzahl-Typen:

  • INT
  • SMALLINT
  • SHORTINT
  • BYTE
  • WORD
  • LONGWORD
  • INT64

Weitere:

  • BINARY (Base64 kodierte Daten)
  • VARIANT
  • EMPTY
  • NULL

Ungültige Typen:

  • DISPATCH
  • ERROR
  • UNKNOWN
  • STRARG
  • ANY
  • TYPEMASK
  • ARRAY
  • BYREF

Datums- und Zeitwerte werden als formatierter Zeitstempel in der Form DateStamp(hex)TimeStamp(hex) (z.B.: 000B2FB3h0039B52Fh) übergeben und verwaltet. Siehe auch Timestamp Format.

Zusätzlich kann einem c4Document als Unterknoten ein „<Info>“ Tag übergeben werden. In diesem Bereich kann ein Base64 codiertes RTF (deprecated) Dokument abgelegt werden. Mit dem Attributzusatz „Contains“ und dem Wert „Plaintext“ können die Information im Klartext übergeben werden.

Beispiel XML (Standard)

<?xml version="1.0" encoding="UTF-8" ?>
<c4Document FormatVersion="1.4" Type="Default">
  <Info Contains="Plaintext">ExampleInfo</Info>
  <Content RootNode="/clarc/Software">
    <Key Name="Basics">
      <Property Name="Test" DataType="INT">123</Property>
      <Key Name="SMTP">
        <Property Name="Port" DataType="INT" User="clarc" Date="2016-01-01 23:55:01">25</Property>
        <Property Name="Sender" DataType="UCS2STR">...</Property>
        <Property Name="Server" DataType="UCS2STR">localhost</Property>
        <Property Name="Data" DataType="BINARY" Compressed="True">...</Property>
      </Key>
    </Key>
  </Content>
  <Content RootNode="/clarc/Test">
  ...
  </Content>
</c4Document>

Beispiel XML (Package)

<?xml version="1.0" encoding="UTF-8" ?>
<c4Document FormatVersion="1.4" Type="Package" PackageName="/c4/HelpExample"
PackageVersion="1.0.0.0" PackageId="B32FAD2A4EF85E4F3B9A32B1A03ADF37" PackageDate="2016-01-01" Hash="..." ReleaseRequired="5.0.1">
...
</c4Document>

Import

Der Import erfolgt entweder direkt im C4 via drag'n'drop, dem Menüpunkt Import, dem Package-Manager oder automatisiert über das Tool c4import.exe.