Menüaufruf: (Konfiguration) - (Import & Export) - (XML Strukturdefinition)
Der Import von Daten aus XML orientiert sich sehr stark an dem Strukturdefinition. Daher wird hier nur auf die Unterschiede eingegangen. Insbesondere gibt es XML Strukturdefinitionen und den eigentlichen XML Datei Import.
Die XML Strukturdefinition beschreibt für ein Business Object (BO), wie die XML Inhalte aus der gegebenen XML Datei auf die Attribute (Felder) übertragen werden (Mapping). Die Strukturdefinition benötigt die folgenden Angaben:
Einfacher XPath Ausdruck, der die Attributverarbeitung (s.u.) der Strukturdefinition triggert.
Das BO, das durch diese Strukturdefinition erzeugt (aktualisiert/gelöscht) wird.
Jede Zeile definiert, wie ein Attribut (Feld) des BOs aus dem XML extrahiert werden soll. Die einzelnen Spalten bedeuten:
Einfacher XPath Ausdruck (relativ zum Struktur Match), der den XML Knoten (Element bzw. Attribute) auswählt, dessen Wert auf das BO Attribut übertragen wird. Details weiter unten.
BO Attribut (Feld), in den der aus dem XML extrahierte Wert eingetragen wird.
Über das Feld Berechnungsausdruck kann ein zu importierendes Attribut dynamisch berechnet werden. Dies ist z.B. notwendig, wenn der Wert eines BO Attributes aus mehreren XML Knoten-Werten zusammen gesetzt werden muss. Über ein Groovy-Script können Sie den zu importierenden Wert definieren. Dabei stehen (im Script) die Variablen xpath2value
(Map<String, String>), line
(java.lang.Integer, die aktuelle Zeilennummer in der XML Datei) und log
(org.nuclos.server.fileimport.ImportLogger) zur Verfügung.
Die Variable xpath2value
ist besonders interessant. Sie enthält zu den relativen XPath Ausdrücken (als Schlüssel) die Werte der dadurch ausgewählten XML Knoten (als Wert). (Beispiel weiter unten.)
Verhält sich genau wie beim CSV Import (weitere Informationen dort).
Format wird nur verwendet, wenn kein Berechnungsausdruck (Script) hinterlegt ist. |
Der XML Datei Import definiert, in welcher Reihenfolge die Strukturdefinitionen abgearbeitet werden. Der eigentliche Import geht dann wie folgt vor sich:
Map
zu bilden, die den relativen XPath Ausdruck (bezüglich des Struktur Matches) dem Wert des Elements/Attributes zuordnet.Map
gewonnen, indem der Attribut Match als Schlüssel zur Map verwendet wird. Der ausgelesene Wert wird als Wert für das angegebene Attribut (des BOs) verwendet.xpath2value
zur Verfügung.Aus dem gesagten ergeben sich folgende Einschränkungen des XML Imports:
Der XML Import ist daher nicht für sehr tief verschachtelte XML Strukturen geeignet, speziell wenn die Attribute eines BOs sehr 'weit' voneinander entfernt sind.
Warum ist der XML Import fern von XML und so nah am CSV Import?Das liegt an Einschränkungen im Nuclos Kern, insbesondere an:
Diese Einschränkungen führen dazu, dass es nicht einfach möglich ist, eine (normale) XML Struktur mit Nuclos Bordmitteln auf der Metaebene (also auf der Ebene, wo sich z.B. XML Schema befindet) zu beschreiben. |