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

XML-Export, Teil 3: Elemente mit Inhalt fllen

Der erste und zweite Teil dieser Serie stellen die Mglichkeiten zum Anlegen einer XML-Datei mit einem Wurzelelement und weiteren Unterelementen vor. Der vorliegende Teil enthlt alle Informationen, die zum Fllen eines solchen XML-Dokuments mit den Daten aus der Datenbank erforderlich sind.

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.

XML-Datei mit Daten erstellen

Das Fllen eines Elementes eines XML-Dokuments erfolgt ber die Zuweisung eines Wertes an die Eigenschaft Text des jeweiligen Element-Objekts. Das folgende kleine Beispiel zeigt die grundstzliche Vorgehensweise:

Public Sub XMLElementMitInhaltHinzufuegen()

    Dim objXML As New MSXML2.DOMDocument

    Dim objElement As IXMLDOMElement

    objXML.loadXML "<Projekt />"

    Set objElement = objXML.createElement("Projekt")

    objElement.Text = "Erstes Beispielprojekt"

    objXML.documentElement.appendChild objElement

    objXML.Save "c:\Projekte.xml"

    Debug.Print objXML.XML

    Set objXML = Nothing

End Sub

Das Ergebnis dieser Prozedur ist in Abbildung 1 zu bewundern.

Abbildung 1: Beispiel fr ein Element mit Inhalt

Komplexere Daten als XML-Datei exportieren

Mit der nachfolgenden Prozedur exportieren Sie die kompletten Projektdaten inklusive Kunden in eine XML-Datei. Dabei durchluft die Prozedur zwei Schleifen: Die erste arbeitet alle Kunden ab, die zweite alle Projekte.

Public Sub KundenUndProjekteExportieren()

    Dim db As DAO.Database

    Dim rstProjekte As DAO.Recordset

    Dim rstKunden As DAO.Recordset

    Dim objXML As New MSXML2.DOMDocument

    Dim objElementProjekt As IXMLDOMElement

    Dim objElementKunde As IXMLDOMElement

    Dim objElementTemp As IXMLDOMElement

    Set db = CurrentDb

    objXML.loadXML "<Kunden />"

    Set rstKunden = db.OpenRecordset("tblKunden", dbOpenDynaset)

    Do While Not rstKunden.EOF

        Set objElementKunde = objXML.createElement("Kunde")

        objXML.documentElement.appendChild objElementKunde

        With objElementKunde

            .setAttribute "KundeID", rstKunden!KundeID

            Set objElementTemp = _

                objXML.createElement("Kundenbezeichnung")

            .appendChild(objElementTemp).Text = rstKunden!Kunde

            Set objElementTemp = objXML.createElement("Strasse")

            .appendChild(objElementTemp).Text = rstKunden!Strasse

            Set objElementTemp = objXML.createElement("PLZ")

            .appendChild(objElementTemp).Text = rstKunden!PLZ

            Set objElementTemp = objXML.createElement("Ort")

            .appendChild(objElementTemp).Text = rstKunden!Ort

            Set objElementProjekte = _

                .appendChild(objXML.createElement("Projekte"))

            Set rstProjekte = _

                db.OpenRecordset("SELECT * FROM tblProjekte " _

                & "WHERE KundeID = " _

                & rstKunden!KundeID, dbOpenDynaset)

            With objElementProjekte

                Do While Not rstProjekte.EOF

                    Set objElementProjekt = _

                        .appendChild(objXML.createElement("Projekt"))

                    With objElementProjekt

                        .setAttribute "ProjektID", rstProjekte!ProjektID

                        Set objElementTemp = _

                            objXML.createElement("Projektbezeichnung")

                        .appendChild(objElementTemp).Text = _

                            rstProjekte!Projektbezeichnung

                        Set objElementTemp = _

                            objXML.createElement("Projektstart")

                        .appendChild(objElementTemp).Text = _

                            rstProjekte!Projektstart

                        Set objElementTemp = _

                            objXML.createElement("ProjektEnde")

                        .appendChild(objElementTemp).Text = _

                            rstProjekte!Projektende

                        Set objElementTemp = _

                            objXML.createElement("Projektleiter")

                        .appendChild(objElementTemp).Text = _

                            rstProjekte!Projektleiter

                    End With

                    rstProjekte.MoveNext

                Loop

                rstKunden.MoveNext

            End With

            rstProjekte.Close

            Set rstProjekte = Nothing

        End With

    Loop

    objXML.Save "c:\Projekte.xml"

    Set objXML = Nothing

    rstProjekte.Close

    Set rstProjekte = Nothing

    Set db = Nothing

End Sub

Das Resultat dieser Prozedur sieht wie in Abbildung 2 aus.

Abbildung 2: Kunden und Projekte im XML-Format

© 2003-2015 André Minhorst Alle Rechte vorbehalten.