Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

v5.1

...

 

...

...

...


Eine beispielhafte XML-Datei ist wie folgt aufgebaut:

Codeblock
theme
languagexmlRDark
<?xml version="1.0"?>
<mamExport>
  <settings>
    <exportTime>1525333474</exportTime>
    <clientID>1</clientID>
    <domainID>1</domainID>
  </settings>
  <languages>
    <language id="1">de</language>
    <language id="2">en</language>
  </languages>
  <folders>
    <folder id="1">
      <createTime>1525077772</createTime>
      <changeTime>1525077772</changeTime>
      <mamFolderPath>
        Zweiter-Testordner/Unterordner-des-Testordners/
      </mamFolderPath>
      <mamFolderColor>#274e13</mamFolderColor>
      <mamFolderIsSystemFolder>0</mamFolderIsSystemFolder>
    </folder>
    <...>
  </folders>
  <fields>
    <field id="2">
      <changeTime>1525080455</changeTime>
      <createTime>1525080455</createTime>
      <userID>1</userID>
      <mamFileFieldIdentifier>
        <value languageID="1">Test-Identifier</value>
        <value languageID="2">Test-Identifier</value>
	  </mamFileFieldIdentifier>
      <mamFileFieldLabel>
        <value languageID="1">Test-Label</value>
        <value languageID="2">Test-Label</value>
	  </mamFileFieldLabel>
      <mamFileFieldType>rte</mamFileFieldType>
      <mamFileFieldEntries>
        <value languageID="1"></value>
        <value languageID="2"></value>
	  </mamFileFieldEntries>
      <mamFileFieldPredefined>
        <value languageID="1"></value>
        <value languageID="2"></value>
	  </mamFileFieldPredefined>
      <mamFileFieldTooltip>
        <value languageID="1"></value>
        <value languageID="2"></value>
      </mamFileFieldTooltip>
      <mamFileFieldGroupChildFields>
        <value languageID="1"></value>
        <value languageID="2"></value>
	  </mamFileFieldGroupChildFields>
      <mamFileFieldResultColumn>0</mamFileFieldResultColumn>
      <mamFileFieldSort>0</mamFileFieldSort>
      <mamFileFieldConstraint></mamFileFieldConstraint>
      <mamFileFieldRelation>
        <value languageID="1"></value>
        <value languageID="2"></value>
	  </mamFileFieldRelation>
      <mamFileFieldFeatureForm>
        <value languageID="1"></value>
        <value languageID="2"></value>
	  </mamFileFieldFeatureForm>
    </field>
    <...>
  </fields>
  <files>
    <file id="1">
      <folderID>4</folderID>
      <createTime>1525078573</createTime>
      <changeTime>1525247400</changeTime>
      <userID>1</userID>
      <mamFilePath>
        Zweiter-Testordner/Unterordner-des-Testordners/sample-image-1.jpg
      </mamFilePath>
      <mamFileFileSize>5259440</mamFileFileSize>
      <mamFileResX>3648</mamFileResX>
      <mamFileResY>2432</mamFileResY>
      <mamFileMimeType>image/jpeg</mamFileMimeType>
      <mamStatus>0</mamStatus>
      <mamFileMetaData>image/jpeg</mamFileMetaData>
      <fields>
        <field id="2">
          <value languageID="1">Der Wert des Feldes für Sprache 1</value>
          <value languageID="2">Der Wert des Feldes für Sprache 2</value>
        </field>
        <...>        
      </fields>
    </file>
    <...>
  </files>
</mamExport>

...

Im Fall des fields-Knotens eines file-Knotens sieht die Struktur beispielhaft wie folgt aus:

Codeblock
languagephp
themeRDark
'fields' => [
  'field' => [
    [
      '@id' => 1,
      'value' => [
        [
          '@languageID' => '1',
          '#'           => 'Wert für Sprache 1'
        ],
        [
          '@languageID' => '2',
          '#'           => 'Wert für Sprache 2'
        ]
      ]
    ],
    [
      '@id'   => 2,
      'value' => [
        [
          '@languageID' => '1',
          '#'     => 'Wert 2 für Sprache 1'
        ],
        [
          '@languageID' => '2',
          '#'     => 'Wert 2 für Sprache 2'
        ]
      ]
    ],
    ...
  ]
]


Als XML serialisiert ergibt das folgende Ausgabe:

Codeblock
languagexmlthemeRDark
<fields>
	<field id=1>
		<value languageID="1">Wert für Sprache 1</value>
		<value languageID="2">Wert für Sprache 2</value>
	</field>
	<field id=2>
		<value languageID="1">Wert 2 für Sprache 1</value>
		<value languageID="2">Wert 2 für Sprache 2</value>
	</field>
</fields>

Grundsätzlich verwendet der Encoder assoziative Arrays, z.B. ['field' => 'value'] wird zu <field>value</field> serialisiert. Probleme gibt es hierbei, wenn mehrere field-Knoten nacheinander stehen sollen, da der Key in assoziativen Arrays immer eindeutig sein muss. Das Folgende Array ist daher nicht möglich: ['field' => 'value', 'field' => 'value2']. Um dies zu erzielen wird folgendes geschrieben: ['field' => ['value', 'value2']]. Um dem Knoten field ein Attribut id zu geben muss dieses mittels @attributsname angegeben werden (siehe im oberen XML-Beispiel field und value mit den Attributen id und languageID). Hierbei wird die Struktur dann schnell recht komplex und unübersichtlich. Die falsche Verwendung von nummerischen und assoziativen Arrays führt schnell zu einem völlig anderen Ergebnis in der XML-Ausgabe.

...