Auslesen von XML-Dateien
Nachdem wir bereits eine erste einfache XML-Datei erzeugt haben,nnen wir diese auch laden und an-
zeigen lassen. Dazu benötigen Sie in jedem Fall neben dem bekannten DOMDocument-Objekt auch ein
XMLDOMNode-Objekt, um zumindest auf das Wurzel-Element der XML-Daten zugreifen zu können. Die
wichtigsten Eigenschaften und Methoden zeigen die folgenden beiden Tabellen.
Eigenschaft Beschreibung
attributes Collection von Attributen
baseName Nodename ohne Präfix
childNodes Collection mit allen Untereinträgen (-Knoten)
dataType Datentyp des Knotens
definition Liefert die zum Knoten gehörende DTD
firstChild Liefert den ersten Untereintrag
lastChild Liefert den letzten Untereintrag
nextSibling Liefert den Nachfolger in der gleichen Baumebene
nodeName Liefert den Name des Elementes/Attributes
nodeType Spezifiziert den Knotentyp
nodeTxpedValue Der enthaltene Knotenwert
nodeTypeString Knotentyp in String-Form
nodeValue Der mit dem Knoten verbundene Text
ownerDocument Das dem Knoten übergeordnete Dokument
parentNode Der dem Knoten übergeordnete Knoten
parsed Gibt Auskunft darüber, ob der aktuelle Knoten mit allen Untereinträgen bereits geparst wurde
previousSibling Liefert den Vorgänger in der gleichen Baumebene
text Der Text-Inhalt des Knotens und aller Untereinträge
xml Die XML-Daten des Knotens und aller Untereinträge
Tabelle 12.6 Wichtige Eigenschaften des XMLDOMNode-Objekts
Methode Beschreibung
appendChild Fügt einen neuen untergeordneten Knoten ein
cloneNode Erzeugt eine Kopie des aktuellen Knotens
hasChildNodes Gibt Auskunft darüber, ob der Knoten Untereinträge hat
insertBefore Fügt einen Knoten vor dem aktuellen Knoten ein
removeChild Entfernt einen untergeordneten Knoten
replaceChild Ersetzt einen untergeordneten Knoten
Tabelle 12.7 Wichtige Methoden des XMLDOMNode-Objekts
777
XML-Verarbeitung mit dem DOM
BEISPIEL
BEISPIEL
Kapitel 12: XML in Theorie und Praxis
Methode Beschreibung
selectNodes Liefert eine Collection von Node-Objekten, die dem gewünschten Kriterium entsprechen
selectSingleNode Liefert das erste gefundene Node-Objekt, das dem gewünschten Kriterium entspricht
Tabelle 12.7 Wichtige Methoden des XMLDOMNode-Objekts (Fortsetzung)
Bestimmen des Wurzel(Root)-Elementes
Einlesen der eben erzeugten Datei und Anzeige des
ersten
Elements
Sub XML_Versuch_3()
Dim xmlDoc As DOMDocument30
Dim root As IXMLDOMNode
Dim node As IXMLDOMNode
Set xmlDoc = New DOMDocument30
xmlDoc.Load ("c:\Test2.xml")
Einen »Zeiger« auf das Wurzelelement (»WELT«) bestimmen:
Set root = xmlDoc.documentElement
Nachfolgend können wir den ersten Untereintrag ermitteln und anzeigen:
Set node = root.firstChild
MsgBox node.nodeName
End Sub
Die Ausgabe lautet »Afrika«, entsprechend der Reihenfolge, in der die Elemente im vorhergehenden Beispiel
gesichert wurden.
Anzeige aller Elemente einer Baum-Ebene
Dass Sie sich nicht nur auf das erste Element beschränken brauchen, zeigt Ihnen das folgende Beispiel gleich
in mehreren Varianten: Entweder Sie lesen die Elemente über die ChildNodes-Collection des Wurzel-
Elementes aus oder Sie »hangeln« sich mit der Methode NextSibling durch die Objektliste oder Sie sind ein
ganz konventioneller Programmierer, d.h. Sie verwenden die gute alte For-Next-Schleife. Das Ergebnis ist in
allen Fällen das gleiche.
Anzeige der einzelnen Elemente mit Hilfe der DOM-Eigenschaften und Methoden im Debug-Fenster.
Sub XML_Versuch_4()
Dim xmlDoc As DOMDocument30
Dim root As IXMLDOMNode
Dim node As IXMLDOMNode
Dim list As IXMLDOMNodeList
Dim i As Integer
778
BEISPIEL
Set xmlDoc = New DOMDocument30
xmlDoc.Load ("c:\Test2.xml")
Set root = xmlDoc.documentElement
Auslesen mit Hilfe der Collection
ChildNodes
:
Set list = root.childNodes
For Each node In list
Debug.Print node.nodeName
Next node
Auslesen mit Hilfe der Methode
NextSibling
:
Set node = root.firstChild
While Not (node Is Nothing)
Debug.Print node.nodeName
Set node = node.nextSibling
Wend
Auslesen mit einer einfachen
For-Next
-Schleife:
For i = 0 To root.childNodes.length - 1
Debug.Print root.childNodes.Item(i).nodeName
Next
End Sub
Abbildung 12.29 Die Ausgabe im Direktfenster
Direktzugriff auf einzelne Elemente
Sicher dürfte es recht mühsam sein, bei der Suche nach einem bestimmten Baumelement immer gleich die
ganze Liste zu durchsuchen, um zum Beispiel das Element »EUROPA« zu finden. In diesem Fall hilft Ihnen
die SelectSingleNode-Methode weiter.
Verwendung von
SelectSingleNode
Sub XML_Versuch_5()
Dim xmlDoc As DOMDocument30
Dim root As IXMLDOMNode
Dim node As IXMLDOMNode
Set xmlDoc = New DOMDocument30
xmlDoc.Load ("c:\Test2.xml")
Set root = xmlDoc.documentElement
779
XML-Verarbeitung mit dem DOM

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.