Kontrollelemente in der Zielstruktur für die XML-Erzeugung

Prev Next

Um den Aufbau von XML-Elementen in der Zielstruktur steuern zu können, werden Eigenschaften in Zielstrukturknoten/Zielstrukturfeldern, sowie spezielle Zielstrukturfelder, mit reservierten Namensendungen verwendet.

Eigenschaften in Zielstrukturknoten

  • "XML Namespace": Über diese Eigenschaft kann dem Element, welches aus dem Knoten erzeugt wird, ein XML-Namespace zugeordnet werden, z. B: soapenv. Alle im Knoten enthaltenen Elemente bekommen so automatisch den selben Namespace, insofern dort kein anderer gesetzt ist. Zusätzlich kann über diese Eigenschaft auch ein Namespace definiert werden. Beispiel: soapenv=http://schemas.xmlsoap.org/soap/envelope/. Soll kein Namespace angegeben werden obwohl die Eigenschaft Use namespace Inheritance gesetzt ist, muss DEFAULT eingetragen werden. Um einen Default-Namespace zu definieren (z. B. <element xmlns="http://tempuri.org/"> ) muss die Eigenschaft wie folgt gesetzt werden: DEFAULT=http://tempuri.org/

  • "XML/JSON Behandlung": Diese Eigenschaft steuert, in welcher Form der Knoten in das XML aufgenommen wird. Folgende Einstellungen sind möglich:

    • Normal: Der Knoten wird als Element im XML erzeugt.

    • Exkludieren: Der Knoten wird bei der Erzeugung ignoriert und somit gar nicht betreten.

    • Transparent: Der Knoten selbst erzeugt kein XML Element, aber der Inhalt im Knoten wird berücksichtigt.

    • Array: (Dieser Wert ist nicht relevant für diese Funktion.)

    • Array Transparent: (Dieser Wert ist nicht relevant für diese Funktion.)

  • "Maximum": Erzeugt ein Mapping mehrere Datenblätter, dann wird ein Knoten über diese Datenblätter hinweg betrachtet mehrfach erzeugt. Hat nun der Knoten den Wert 1 bei der Knoten-Eigenschaft Maximum, dann wird das dem Knoten entsprechende Element im XML nur einmal erzeugt, die Felder des mehrfach vorhandenen Knoten werden im einfach vorhandenen XML-Element alle untereinander gelistet. Ist dieses Verhalten nicht erwünscht, dann z. B. einfach den Wert 99999 verwenden für Eigenschaft Maximum. Hier ein angedeutetes Beispiel:

Eigenschaften in Zielstrukturfeldern

  • "XML Namespace": Über diese Eigenschaft kann dem Element, welches aus dem Feld erzeugt wird, ein XML-Namespace zugeordnet werden, z. B: soapenv. Zusätzlich kann über diese Eigenschaft auch ein Namespace definiert werden. Beispiel: soapenv=http://schemas.xmlsoap.org/soap/envelope/. Soll kein Namespace angegeben werden obwohl die Eigenschaft gesetzt ist, muss DEFAULT eingetragen werden.

Beispiel zur Zielknoten-Eigenschaft "XML/JSON Behandlung"

Gegeben ist folgende Zielstruktur.

Der Knoten root#1 ist bei der XML Behandlung als Root definiert. Anhand der Änderung der Behandlung im Knoten user#3 wird gezeigt, welche Auswirkungen die unterschiedlichen Parameter haben. Folgende XML-Datei wird beim gegebenen Mapping ausgegeben, mit folgender Behandlung im user#3-Knoten.

Normal

Es wird jeder Wert und Knoten ausgegeben.

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <record art="root" type="map">
    <scm:user xmlns:scm="http://scm.de" scm:type="object">
      <scm:name scm:type="String">name</scm:name>
      <scm:givenName scm:type="String">given</scm:givenName>
    </scm:user>
    <items type="array">
      <arrayItem type="object">
        <item type="String">abc</item>
        <itemType type="String">ALL</itemType>
      </arrayItem>
      <arrayItem type="object">
        <item type="String">cde</item>
        <itemType type="String">ALL</itemType>
      </arrayItem>
    </items>
    <persons test="fix">
      <name>20131018</name>
      <ignore test="fix"/>
    </persons>
  </record>
</root>

Transparent

Der Knoten wird nicht mehr ausgegeben, aber die Felder im Knoten.

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <record art="root" type="object">
    <name type="String">name</name>
    <givenName type="String">given</givenName>
    <items type="array">
      <arrayItem type="object">
        <item type="String">abc</item>
        <itemType type="String">ALL</itemType>
      </arrayItem>
      <arrayItem type="object">
        <item type="String">cde</item>
        <itemType type="String">ALL</itemType>
      </arrayItem>
    </items>
    <persons test="fix">
      <name>20131018</name>
      <ignore test="fix"/>
    </persons>
  </record>
</root>

Exkludieren

Der Knoten user#3, sowie seine dazugehörigen Feldwerte, werden nicht ausgegeben.

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <record art="root" type="map">
    <items type="array">
      <arrayItem type="object">
        <item type="String">abc</item>
        <itemType type="String">ALL</itemType>
      </arrayItem>
      <arrayItem type="object">
        <item type="String">cde</item>
        <itemType type="String">ALL</itemType>
      </arrayItem>
    </items>
    <persons test="fix">
      <name>20131018</name>
      <ignore test="fix"/>
    </persons>
  </record>
</root>