XML Daten erstellen
XML-Dokumente als Ziel
Als Transferziel erstellt das XML-Objekt XML-Code anhand der konfigurierten X-Path-Abfragen.
- Der XML-Code kann weiter übertragen werden, z. B. in eine Datenbank. Um eine XML-Datei zu erzeugen, wäre ein Script erforderlich.
Zum Beispiel wird aus einer Tabelle geliefert:
Autor | Titel |
----- | ----- |
Heinrich Mann | Der Untertan |
Thomas Mann | Buddenbrooks: Verfall einer Familie |
Daraus soll eine XML-Datei mit der bekannten Struktur erzeugt werden.
- Name: „Autor“, X-Path-Ausdruck „/catalog/book/author“
- Name: „Titel“, X-Path-Ausdruck „/catalog/book/title“
Für dieses Beispiel benötigen Sie zwei gestaffelte XML-Objekte. Das erste wird das Result-Sets in einzelne XML-Elemente umwandeln, das zweite wird die Elemente in einem Dokument zusammenfassen:

Projektierung X-Path
-
Die zu schreibenden Datensätze werden hier aus einer Datenbank abgefragt und an die X-Path-Elemente des ersten XML-Transferobjekts übergeben.
-
Das XML-Objekt erzeugt den XML-Code. Das XML-Objekt enthält dazu die bekannten X-Path-Ausdrücke
-
Name: „Autor“, X-Path-Ausdruck „book/author“
-
Name: „Titel“, X-Path-Ausdruck „book/title“
sowie die Grundstruktur
<book>
<author></author>
<title></title>
</book>Wichtig ist die Eigenschaft XML-Ausgabe = „Mehrere XML-Dokumente ausgeben“, damit jeder Datensatz aus der Datenbank ein eigenes Element wird.
Die Struktur könnte zur Laufzeit auch dynamisch übergeben werden, z. B. aus einer Textdatei oder aus einer Datenbank.
-
-
Der Code wird aus dem XML-Element an das X-Path-Element des zweiten XML-Transferobjekts übergeben. Dieses Objekt enthält nur die XML-Deklaration und das Root-Element:
<?xml version="1.0"?>
<catalog>
</catalog>Mit der X-Path-Abfrage /catalog und der Eigenschaft XML-Ausgabe „In einem Dokument zusammenfassen“
-
Der Code kann weiter übertragen werden. Hier wird ein Script-Transferobjekt verwendet, um eine Datei zu erzeugen. Dateipfad (Typ: String) und XML-Inhalt (Typ: Array, String) werden als Eingabeparameter übergeben:
public override void Write()
{
StringBuilder stb = new StringBuilder();
stb.AppendLine("<?xml version=\"1.0\"?>");
foreach(string xml in XMLContent)
{
stb.AppendLine(xml.Substring(xml.IndexOf("?>")+2));
}
System.IO.File.WriteAllText(FilePath, stb.ToString());
}