Kapitel 12: XML in Theorie und Praxis
Abbildung 12.62 Laufzeitansicht
Navigieren zwischen einzelnen XML-Baumknoten
XML; ParentNode-, PreviousSibling-, FirstChild-, LastChild-, NextSibling-Methoden;
Welche Möglichkeiten, d.h. Methoden bzw. Eigenschaften, zur Navigation zwischen den einzelnen Knoten
sich anbieten, zeigt die folgende Skizze (Ausgangspunkt ist der hervorgehobene Knoten):
PreviousSibling
OwnerDocument
ParentNode
...
NextSibling
Node
FirstChild
...
ChildNodes
LastChild
Abbildung 12.63 Navigationsmöglichkeiten zwischen
den einzelnen Knoten
Wie Sie sehen, können Sie von jedem beliebigen Knoten aus auf den gesamten Baum zugreifen. Entweder
Sie bewegen sich mit PreviousSibling bzw. NextSibling innerhalb einer Ebene oder Sie wechseln mit Parent-
Node in die übergeordnete Ebene, um dort ebenfalls mit PreviousSibling bzw. NextSibling auf die einzelnen
816
HINWEIS
Knoten zuzugreifen. Möchten Sie die untergeordneten Elemente eines Knotens verarbeiten, können Sie zu-
nächst mit FirstChild auf das erste untergeordnete Element zugreifen und ausgehend davon wiederum mit
PreviousSibling bzw. NextSibling auf die weiteren Elemente der dann aktiven Ebene zugreifen.
Unser kleines Test- und Probierprogramm hat die recht einfache Aufgabe, die Datei Test.xml von der Fest-
platte zu laden. Nachfolgend soll ausgehend vom Root-Element die Navigation zwischen den einzelnen
Baumknoten demonstriert werden. Dazu stellen entsprechende Tasten die jeweiligen Methoden zur Ver-
fügung. Ist der Knoten gewechselt, wird die Bezeichnung angezeigt.
Oberfläche
Entwerfen Sie eine Oberfläche nach folgendem Vorbild:
Abbildung 12.64 Laufzeitansicht
Vergessen Sie nicht die Library Microsoft XML, v6.0, einzubinden (Menübefehl Extras/Verweise...).
Quelltext
Zunächst binden wir die obligaten Variablen für den Zugriff auf XML-Daten ein:
Dim xmlDoc As DOMDocument30
Dim root As IXMLDOMElement
Dim node As IXMLDOMNode
Mit dem Öffnen des Fensters öffnen wir auch die Datei und weisen der Variablen
Node
den Root-Knoten zu:
Private Sub Form_Load()
Set xmlDoc = New DOMDocument30
xmlDoc.Load CurrentProject.Path & ("\Test.xml")
Set root = xmlDoc.documentElement
Set node = root
Bezeichnungsfeld0.Caption = node.nodeName
End Sub
Wir wechseln zum Parent:
Private Sub Befehl1_Click()
If Not (node.parentNode Is Nothing) Then
Set node = node.parentNode
Bezeichnungsfeld0.Caption = node.nodeName
Else
MsgBox "Kein Parent vorhanden!"
End If
End Sub
817
Praxisbeispiele
HINWEIS
Kapitel 12: XML in Theorie und Praxis
Wir wechseln zum Vorgänger in der gleichen Baumebene:
Private Sub Befehl2_Click()
If Not (node.previousSibling Is Nothing) Then
Set node = node.previousSibling
Bezeichnungsfeld0.Caption = node.nodeName
Else
MsgBox "Kein Vorgänger vorhanden!"
End If
End Sub
Wir wechseln zum Nachfolger in der gleichen Baumebene:
Private Sub Befehl3_Click()
If Not (node.nextSibling Is Nothing) Then
Set node = node.nextSibling
Bezeichnungsfeld0.Caption = node.nodeName
Else
MsgBox "Kein Nachfolger vorhanden!"
End If
End Sub
Wir wechseln zum ersten Child-Knoten:
Private Sub Befehl4_Click()
If node.childNodes.length > 0 Then
Set node = node.firstChild
Bezeichnungsfeld0.Caption = node.nodeName
Else
MsgBox "Keine Untereinträge vorhanden!"
End If
End Sub
Wir wechseln zum letzten Child-Knoten:
Private Sub Befehl5_Click()
If node.childNodes.length > 0 Then
Set node = node.lastChild
Bezeichnungsfeld0.Caption = node.nodeName
Else
MsgBox "Keine Untereinträge vorhanden!"
End If
End Sub
Test
Starten Sie das Programm und versuchen Sie durch den XML-Baum zu navigieren. Die folgende Abbildung
12.65 soll Ihnen dabei als Hilfestellung dienen.
Beachten Sie, dass sich auch über »WELT« noch ein Objekt befindet!
818

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.