Versionen im Vergleich

Schlüssel

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

Nuclos XML Strukturdefinition: XPath, Struktur Match, Attribut Match, xpath2value, well-formed, mixed content, XML Import.

globe with meridians Sprache: Deutsch · English

open book XML Strukturdefinition

XML auf Businessobjekte mappen – Struktur-/Attribut-Match, xpath2value und die Grenzen des XML-Imports.

Status
colourGrey
titleReferenz
Status
colourBlue
titleAnwendungsentwickler
Status
colourGreen
titleStand: Jul 2026
Status
colourGrey
titlegilt fuer Nuclos 4.2026.x

Panel
bgColor#F4F5F7

Auf dieser Seite

Inhalt
maxLevel2
minLevel

Definition

Menüaufruf: (Konfiguration) - (Import & Export)  - (XML Strukturdefinition)

2

XML-Import in Nuclos

Der XML-Import orientiert sich stark an der CSV-Strukturdefinition; hier gehen wir

...

nur auf die Unterschiede

...

ein.

...

Es gibt

...

XML-Strukturdefinitionen (Mapping je BO) und den

...

XML-Datei-Import (Reihenfolge).

...

XML

...

-Strukturdefinition

AngabeBedeutung

...

Match (Struktur)

...

einfacher XPath

...

, der die Attributverarbeitung

...

triggert.
Businessobjekt

...

das BO, das

...

erzeugt

...

/aktualisiert/gelöscht

...

wird.

...

Jede Zeile definiert, wie ein Attribut (Feld) des BOs aus dem XML extrahiert werden soll. Die einzelnen Spalten bedeuten:

Match (Attribut)

...

XPath

...

relativ zum Struktur-Match

...

,

...

wählt den

...

zu übertragenden Knoten

...

.

...

Attribut (BO)

...

Zielfeld für den extrahierten Wert.
BerechnungsausdruckGroovy-Script mit xpath2value (Map), line, log – z.​B. um einen Wert aus mehreren Knoten zusammenzusetzen.
Formatwie beim CSV-Import; nur ohne Script wirksam.

Ablauf des XML-Datei-Imports

  1. Je Strukturdefinition wird die XML-Datei einmal komplett gelesen.
  2. Beim Struktur-Match wird der eingeschlossene Teilbaum als Map (relativer XPath → Wert) aufgebaut.
  3. Attributwerte werden über den Attribut-Match als Schlüssel aus der Map gewonnen.
  4. Optional stellt ein Berechnungsausdruck die Map als xpath2value bereit.
  5. Genau ein Attribut-Match darf „nach außen greifen“ (Attribute/direkte Kinder der Eltern des Struktur-Matches).
Warnung
titleGrenzen

Einschränkungen: Die Datei muss well-formed sein (kein Schema nötig/möglich); mixed content wird nicht unterstützt (ein Element enthält entweder Text oder Kindelemente); die Daten eines BOs müssen in einem zusammenhängenden Teilbaum liegen und werden komplett in den Speicher geladen – also klein halten. Für tief verschachtelte Strukturen ist der XML-Import ungeeignet.

Verwandte Seiten

clipboard Strukturdefinition


CSV-Variante.

Öffnen →

electric plug Objektimport


Import ausführen.

Öffnen →

Ü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.)

Format (Parsestring)

Verhält sich genau wie beim CSV Import (weitere Informationen dort).

Warnung

Format wird nur verwendet, wenn kein Berechnungsausdruck (Script) hinterlegt ist.

XML Datei Import

Der XML Datei Import definiert, in welcher Reihenfolge die Strukturdefinitionen abgearbeitet werden. Der eigentliche Import geht dann wie folgt vor sich:

  1. Für jede Strukturdefinition wird die XML Datei einmal geöffnet (gelesen) und deren Inhalt von Anfang bis Ende verarbeitet.
  2. Findet die Strukturdefinition den in ihr festgelegten Struktur Match, so wird der hier eingeschlossene XML (Teil-)Baum vollständig gelesen, um eine Map zu bilden, die den relativen XPath Ausdruck (bezüglich des Struktur Matches) dem Wert des Elements/Attributes zuordnet.
  3. Die Attribute werden aus dieser 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.
  4. (Optional.) Falls ein Berechnungsausdruck angegeben wird, steht in dem zugehörigen Script diese Map als Variable xpath2value zur Verfügung.
  5. (Optional.) Genau ein Attribut Match darf auch 'nach außen greifen', d.h. dieses kann durch Werte vom XML Root Element bis zum Parent Element des Struktur Matches befüllt werden. Erlaubt sind in diesem Fall aber nur Attribute und direkte Kind Elemente der Eltern Elemente des Struktur Matches.

Einschränkungen des XML Imports

Aus dem gesagten ergeben sich folgende Einschränkungen des XML Imports:

  • Die XML Datei muss well-formed sein. Ein XML Schema wird nicht benötigt (und kann auch nicht angegeben werden)
  • Der XML Import von Dateien mit mixed content (d.h. in einem Tag können sich gleichzeitig Text und Unterelemente befinden) ist nicht vorgesehen. Anders gesagt: in jedem XML Element befindet sich entweder Text oder weitere XML Elemente (Tags).
  • Die Inhalte für ein BO müssen sich im XML in einem zusammenhängenden Teilbaum befinden. Diese Teilbäume müssen für den Import komplett in den Speicher geladen werden; sie sollten also möglichst klein sein.

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.

Info
Warum ist der XML Import fern von XML und so nah am CSV Import?

Das liegt an Einschränkungen im Nuclos Kern, insbesondere an:

  • Kein Support für rekursive Datenstrukturen
  • Ein BO kann nur einmal als Unterformular in einem anderen BO angezeigt werden. Es ist nicht möglich, dasselbe BO in mehreren (unterschiedlichen) Funktionen als Unterformular in ein anderes BO einzubetten.
  • Nur eingeschränkter Support für Unterformulare von Unterformularen.
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.