Der DOM-Parser wird als DOMDocument-Objekt implementiert, das gleichzeitig die unterste Wurzel (root) des DOM-Baumes ist. Leider gibt es nicht weniger als vier DOMDocument-Objekte in der MSXML2-Library – eine ziemlich verwirrende Sache. Die Gründe von Microsoft für so viele Document-Objekte würde den Rahmen dieses Artikels sprengen (sie hängen zusammen mit Abwärtskompatibilität und COM ProgIDs). Also interessiert uns nur, dass DOMDocument40 das aktuellste DOMDocument ist und damit das von uns hier verwendete.
Alle Elemente in einem Dokument sind Kind-Knoten des Document Objekts, welches eine Reihe von Factory-Methoden bereitstellt, die zur Erstellung unterschiedlicher Arten von Knoten verwendet werden, mit denen man im Verlauf der Bearbeitung eines Dokuments zu tun hat. IXMLDOMNode ist die Basis-Klasse für alle Arten von Knoten, die man beim Arbeiten mit einem XML-Dokument verwendet. Die wichtigsten Arten von Knoten sind in Tabelle A aufgeführt.
Node Object | DOMDocument40 Factory-Methode | Verwendung |
IXMLDOMNode | createNode() | Basis-Klasse für alle Arten von Baum-Knoten |
IIXMLDOMElement | createElement() | Repräsentiert ein XML-Element (Tag-Paar) |
IXMLDOMAttribute | createAttribute() | Repräsentiert ein Attribut |
IXMLDOMProcessing Instruction |
createProcessing Instruction() |
Repräsentiert eine Processing Instruction, wie z.B. die Angabe der XML-Version |
Tabelle A: Einige Arten von Knoten
So bewegt man sich innerhalb eines Dokuments
Die Basis-Klasse IXMLDOMNode stellt Methoden zur Verfügung, die man benutzen kann, um sich in einem Dokumentenbaum zu bewegen.
Die Eigenschaften firstChild und lastChild geben eine Instanz des ersten und letzten Knotens unterhalb des aktuellen Knotens zurück. Von da aus kann man sich zum nächsten oder vorherigen Geschwister-Knoten des jeweiligen Kind-Knotens bewegen, indem man die Eigenschaften nextSibling und previousSibling verwendet. Überprüfen Sie die nodeType-Eigenschaft um festzustellen, von welcher Art der aktuelle Knoten ist. Wenn es sich um ein Element handelt, kann man auf dessen Wert über die nodeValue-Eigenschaft zugreifen.
Man kann auf die Kinder eines Knotens auch über eine IXMLDOMNodeList-Collection zugreifen, welche man mithilfe der childNodes-Eigenschaft einer Instanz eines Knotens erhält. IXMLDOMNodeList ist eine indizierte Collection – d.h., man kann auf jeden Kind-Knoten über seinen Index zugreifen (beginnend mit 0).
Neueste Kommentare
4 Kommentare zu Erstellen von XML-Dokumenten mit Hilfe des DOM in VB6
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
Guter Einstieg für DOM-Anfänger, die sich mit VB etwas auskennen
Ich fand den Artikel für meine Zwecke ausgezeichnet, da er mir genau den gewünschten Einstieg in das Thema ermöglich hat.
Ich finde, daß die einzelnen Schritte hinreichend ausführlich und „Codesynchron“ (was oftmals leider nicht der Fall ist) erläutert wurden.
Allerdings hat der Autor den QuellCode wohl nicht mehr abschließend getestet – die Fehlerrate ist einfach zu hoch (siehe Antwort zu Kommentar-Gino) :-)
Erstellen von XML-Dokum. mit Hilfe des DOM in VB6
Schade,
wollte das Ding testen – aber
Set Me.CatalogDoc = etc….
in SetupCatalogDoc()
verursacht folgenden Fehler:
"Methode oder Mitgliedsdaten nicht gefunden"
Verweis auf XML ist vorhanden,
hm – was kann ´das sein?
Gruss
Gino
AW: Erstellen von XML-Dokum. mit Hilfe des DOM in VB6
nach 7 Jahren Test – endlich die Code-Macken gefunden :-)
a) statt Set Me.CatalogDoc.. –> Set CatalogDoc
b) in Form2 eine Variabel CatalogDoc als Public deklarieren
"Public CatalogDoc As MSXML2.DOMDocument40" definieren
c) in Form2 den Event-Handler "cmdOK_Click()" vor "End Sub" wie folgt ergänzen:
Form1.EditCancelled = False
Me.Hide (oder Unload Me)
–> dann kann auch das Ergebnis in Form1 betrachtet werden
Hilfestellung für Anfänger
Der Artikel ist nicht schlecht, könnte aber – für Anfänger dieser Materie – mehr Hilfestellung bieten, damit sich Neulinge besser zurecht finden
so muss ich weiterhin basteln und zaubern um endlich die Ergebnisse zu erzielen , die ich von meinen Programm erwarte.
Des Weiteren sollte der Artikel ruhig mal wieder Aktualisiert werden.