Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

XML-Export, Teil 2: Hinzufügen neuer Elemente

Es gibt mehr als einen Grund, Daten aus einer Access-Datenbank im XML-Format zu exportieren. Man kann die Daten mit einer entsprechenden XSL-Datei im Intranet oder Internet veröffentlichen oder sie in einer anderen Datenbank wieder importieren, wenn man gerade keine Lust oder nicht die Möglichkeit hat, die Quell- und Zieldatenbank miteinander zu verknüpfen.

Teil 1: XML-Datei anlegen

Teil 2: Hinzufügen neuer Elemente

Teil 3: Elemente mit Inhalt füllen

Beispieldatenbank

Die Beispieldatenbank enthält unter anderem zwei Tabellen namens tblProjekte und tblKunden sowie ein Modul mit den nachfolgend beschriebenen Funktionen.

Hinzufügen von Elementen

Im Vergleich zu der Prozedur aus dem ersten Teil dieses Beitrags soll die folgende Prozedur nicht nur ein neues XML-Dokument erzeugen, sondern zusätzlich ein Unterelement namens Kunde hinzufügen.

Dazu benötigen Sie ein zusätzliches Objekt vom Typ IXMLDOMElement. Die createElement-Methode der XML-Bibliothek weist diesem Objekt den gewünschten Namen hinzu. Da es nicht im luftleeren Raum herumschweben soll, verwendet die Prozedur anschließend noch die appendChild-Methode des documentElement-Objekts, um das neue Element an das Wurzelelement des Dokuments anzuhängen.

Public Sub XMLElementHinzufuegen()

    Dim objXML As New MSXML2.DOMDocument

    Dim objElement As IXMLDOMElement

    objXML.loadXML "<Projekt />"

    Set objElement = objXML.createElement("Projekt")

    objXML.documentElement.appendChild objElement

    objXML.Save "c:\Projekte.xml"

    Set objXML = Nothing

End Sub

Überprüfen des Ergebnisses

Für die Betrachtung des Ergebnisses bietet sich natürlich das Öffnen des fertigen Dokuments an. Das ist aber mit der Zeit nervig, so dass man folgende Methode verwenden sollte: Bauen Sie einfach an den gewünschten Stellen die Ausgabe des aktuellen Inhalt des XML-Dokuments im Testfenster ein. Die entsprechende Anweisung lautet:

Debug.Print objXML.xml

Die xml-Eigenschaft enthält den aktuellen XML-Text des Dokuments.

Hinzufügen von Unterelementen

Das große Vorteil von XML-Dokumenten gegebenüber Textdokumenten ist, dass sie hierarchische Daten enthalten können. Um diese darzustellen, kann man jedem Element weitere Unterelemente hinzufügen. Das folgende Beispiel zeigt, wie man dem bisher aus den beiden Elementen Projekte und Projekt bestehenden XML-Dokument noch ein weiteres Element namens Kunde zuweist.

Dazu greift die Prozedur einfach den Verweis auf das zuerst erstellte Unterelement Projekt auf und fügt diesem per appendChild-Methode das neue Unterelement hinzu.

Public Sub XMLDokumentMitStruktur()

    Dim objXML As New MSXML2.DOMDocument

    Dim objElement As IXMLDOMElement

    objXML.loadXML "<Projekte />"

    Set objElement = objXML.createElement("Projekt")

    objXML.documentElement.appendChild objElement

    objElement.appendChild objXML.createElement("Kunde")

    objXML.Save "c:\Projekte.xml"

    Debug.Print objXML.XML

    Set objXML = Nothing

End Sub

 

Entfernen von Elementen

Die Methode RemoveElement dient zum Entfernen eines Elements aus dem XML-Dokument. Die folgende Zeile kann man beispielsweise in obigen Quelldcode integrieren:

objXML.documentElement.removeChild objElement

XML mit Struktur

Mit den Grundlagen im Hinterkopf geht es nun an die Erstellung einer XML-Datei, die zwei miteinander verknüpfte Tabellen abbildet. Die folgende Prozedur erstellt ein XML-Dokument wie in Abbildung 1.

Abbildung 1: Ein strukturiertes XML-Dokument

Die Prozedur enthält nur bereits erwähnte Methoden. Sie fügt dem XML-Dokument lediglich einige Elemente mehr hinzu, die nunmehr alle Felder der beiden Tabellen tblProjekte und tblKunden aufnehmen können.

Public Sub XMLDokumentMitStruktur()

    Dim objXML As New MSXML2.DOMDocument

    Dim objElementProjekt As IXMLDOMElement

    Dim objElementKunde As IXMLDOMElement

    objXML.loadXML "<Projekte />"

    Set objElementProjekt = objXML.createElement("Projekt")

    objXML.documentElement.appendChild objElementProjekt

    With objElementProjekt

        .appendChild objXML.createElement("ProjektID")

        .appendChild objXML.createElement("Projektbezeichnung")

        .appendChild objXML.createElement("Projektstart")

        .appendChild objXML.createElement("Projektende")

        .appendChild objXML.createElement("Projektleiter")

        Set objElementKunde = .appendChild(objXML.createElement("Kunde"))

        With objElementKunde

            .appendChild objXML.createElement("KundeID")

            .appendChild objXML.createElement("Projektphasenbezeichnung")

            .appendChild objXML.createElement("Projektphasenstart")

            .appendChild objXML.createElement("Projektphasenende")

        End With

    End With

    objXML.Save "c:\Projekte.xml"

    Debug.Print objXML.XML

    Set objXML = Nothing

End Sub

 

© 2003-2010 André Minhorst Alle Rechte vorbehalten.