Kontrollelemente in der Zielstruktur für die XML-Erzeugung
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>