Die Beispielanwendung BookEditor erlaubt dem Benutzer die Erstellung eines neuen XML-Dokuments, basierend auf den Werten, die er für ein hypothetisches Buch eingibt. Das Steuerelement TreeView in Formular Form1 zeigt den Inhalt des aktuell geladenden Buch-Katalogs an (Abbildung A).
Abbildung A: Drei Bücher im BookEditor angezeigt
Als erstes erstellt der BookEditor nach dem Start ein neues leeres XML-Dokument, das als root-Element für neue book-Elemente im Dokumenten-Baum dient. Dies geschieht in der Subroutine SetupCatalogDoc (Listing A).
Bevor irgendwelche Knoten erstellt werden, konfiguriere ich den DOM-Parser durch Angabe einiger Parameter der Modul-Variablen CatalogDocDOMDocument40-Objekt:
- Der Parameter async legt fest, ob der Parser im Synchron-Modus läuft. Der Asynchron-Modus (die Default-Einstellung) erlaubt Ihrer Anwendung die Ausführung weiterer Tasks, während der DOM-Parser den Baum eines umfangreichen Dokuments erstellt. Da meine Beispielanwendung mit relativ kleinen Dokumenten arbeitet, habe ich den Synchron-Modus für den Parser eingestellt (async = False) Damit umgehe ich die Schwierigkeiten, die mit der Beobachtung des Fortschritts eines asynchronen Parsers verbunden sind.
- Die Eigenschaft preserveWhiteSpace kontrolliert, ob der Parser zur Repräsentation von Whitespace in einem XML-Dokument Extra-Elemente in den DOM-Baum einfügt. Diese Extra-Elemente können die Navigation komplizieren, also habe ich diese Funktion abgeschaltet, indem ich die Eigenschaft auf false gesetzt habe.
- Die Eigenschaft resolveExternals kontrolliert, ob der Parser versuchen soll, Verweise auf externe Dokumente oder Namespaces aufzulösen, auf die er in einem XML-Dokument stößt. Dies ist eine nützliche Funktion, wenn man es mit einem Dokument zu tun hat, das über ein zugehöriges XML-Schema oder eine DTD verfügt. Setzt man resolveExternals auf true, lädt der Parser automatisch ein Schema oder eine DTD, um das Dokument später dagegen zu validieren.
Nachdem der Parser wie gewünscht eingerichtet ist, kann ich damit beginnen, die benötigten Knoten für das root-Element des neuen Dokuments zu erstellen. Zuerst erzeuge ich einen neuen IXMLProcessingInstruction-Knoten, der die Angabe der XML-Version enthält, die zu Beginn jedes XML-Dokuments erscheinen sollte.
Dann erstelle ich einen IXMLElementNode, der das root-Element catalog des Dokuments repräsentiert. Nachdem diese beiden Knoten CatalogDoc hinzugefügt wurden, habe ich das folgende einfache XML-Dokument (überprüfen Sie dies anhand von CatalogDoc.xml):
<?xml version="1.0"?> <catalog/>
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.