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

XML-Export, Teil 2: Hinzufgen 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 verffentlichen oder sie in einer anderen Datenbank wieder importieren, wenn man gerade keine Lust oder nicht die Mglichkeit hat, die Quell- und Zieldatenbank miteinander zu verknpfen.

Teil 1: XML-Datei anlegen

Teil 2: Hinzufgen neuer Elemente

Teil 3: Elemente mit Inhalt fllen

Beispieldatenbank

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

Hinzufgen 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 zustzlich ein Unterelement namens Kunde hinzufgen.

Dazu bentigen Sie ein zustzliches Objekt vom Typ IXMLDOMElement. Die createElement-Methode der XML-Bibliothek weist diesem Objekt den gewnschten Namen hinzu. Da es nicht im luftleeren Raum herumschweben soll, verwendet die Prozedur anschlieend noch die appendChild-Methode des documentElement-Objekts, um das neue Element an das Wurzelelement des Dokuments anzuhngen.

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

berprfen des Ergebnisses

Fr die Betrachtung des Ergebnisses bietet sich natrlich 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 gewnschten Stellen die Ausgabe des aktuellen Inhalt des XML-Dokuments im Testfenster ein. Die entsprechende Anweisung lautet:

Debug.Print objXML.xml

Die xml-Eigenschaft enthlt den aktuellen XML-Text des Dokuments.

Hinzufgen von Unterelementen

Das groe Vorteil von XML-Dokumenten gegebenber Textdokumenten ist, dass sie hierarchische Daten enthalten knnen. Um diese darzustellen, kann man jedem Element weitere Unterelemente hinzufgen. 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 fgt 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 verknpfte Tabellen abbildet. Die folgende Prozedur erstellt ein XML-Dokument wie in Abbildung 1.

Abbildung 1: Ein strukturiertes XML-Dokument

Die Prozedur enthlt nur bereits erwhnte Methoden. Sie fgt dem XML-Dokument lediglich einige Elemente mehr hinzu, die nunmehr alle Felder der beiden Tabellen tblProjekte und tblKunden aufnehmen knnen.

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-2015 André Minhorst Alle Rechte vorbehalten.