XML in mehrere Dateien splitten, welche mehrere XML Dokumente enthalten

Aus einer großen XML Datei, welche mehrere kleine XML Dokument enthält, sollen jeweils mehrere kleine Dateien mit einer bestimmten Anzahl von XML Dokumenten erstellt werden.

Fallbeispiel:
Die große XML Datei enthält 5 XML Dokumente. Eine XML Datei soll allerdings nur jeweils 2 XML Dokumente erhalten. Das bedeutet aus der einen großen XML Datei müssen 3 kleine XML Dateien erzeugt werden. Die ersten beiden Dateien enthalten somit 2 XML Dokumente und die letzte Datei ein XML Dokument. Natürlich müssen die XML Dokumente wie bei der großen XML Datei durch ein <root> Tag gekapselt werden.

Beispieldatei:

Lösungsbeschreibung
Für das Splitten wird ein XSL in der Version 2.0 geschrieben, welches die einzelnen Dateien mit Funktion xsl:result-document erzeugt.

  1. Wert für die Anzahl der Dokumente in den zu erzeugenden XML Dateien ermitteln.
  2. Ermitteln der Anzahl der Dokument in der Eingangsdatei
  3. Anzahl der zu erzeugenden Dateien ermitteln (Anz. Dok. durch Anz. Dok. in Datei teilen)
  4. Schleife Nr.1 erstellen, die von 1 bis zur ermittelten Anzahl der zu erstellenden Datei durchläuft.
  5. In der Schleife Nr.1 wird die aktuelle Startposition für das Dokument wie folgt ermittelt: Aktuelle Schleifen-Position minus 1 multipliziert mit der Anzahl Dokument in einer Datei.
  6. In der Schleife Nr.1 wird die Ende-Position für das letzte Dokument, das in die Datei geschrieben werden soll, wie folgt ermittelt: Startposition plus Anzahl Dokumente in einer Datei minus 1.
  7. In Schleife Nr.1 eine Variable für den Dateiinhalt erstellen.
  8. Die Variable für den Dateiinhalt wird solange befühlt wie Schleife Nr.2 von der aktuellen Startposition bis zur Ende-Position durchläuft.
  9. In Schleife Nr.2 läuft die Schleife Nr.3, welche jeweils das Dokument mit der Position von Schleife Nr.2 in die Variable schreibt.
  10. Abschließend wird an jedem Durchlaufsende der Schleife Nr.1 der Dateiinhalt der Variable über das xsl:result-document in eine Datei geschrieben.

XSL Code

Hinweis: Die Zielpfadangaben sind in diesem Beispiel für Windows.

Resultat
Datei Nr.1 (c:\1.xml)

Datei Nr.2 (c:\2.xml)

Datei Nr.3 (c:\3.xml)

 

(Visited 644 times, 1 visits today)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.