Sicher hat jeder schon etwas vom großen "XML-Hype" mitbekommen. XML wird als das Datenaustauschformat gefeiert. Wie man XML Dateien mit VB6 richtig liest und erstellt wird dieser Tipp zeigen. Dazu verwenden wir das DOM-API welche mit der Datei msxml.dll mitgeliefert wird und als Active-X Komponente von VB aus genutzt werden kann. Der Vorteil dieser API gegenüber String basierendem Abhandeln von XML Dateien liegt auf der Hand - nämlich die Möglichkeit W3C konforme XML Dateien leicht zu erstellen und zu lesen. Für den Tipp muß ein Standard-EXE Projekt erstellt werden und ein Verweis auf Microsoft XML, v4.0 (System Ordner msxml4.dll) gesetzt werden. Dem Formular sollten folgende Elemente hinzugefügt werden:
Als Datencontainer kommt der Einfachheit halber ein Typarray zur Verwendung welches mit 2 Einträgen (0-basierend) im Form_Load Ereignis gefüllt wird. Danach kann dieser Datencontainer in eine XML-Datei gespeichert werden und wiederum in einen Treeview angezeigt werden. Der Tipp funktioniert auch mit der msxml2.dll (Win95 und IE 4.0). Option Explicit ' --> Das XMLDom Objekt Private oDOM As DOMDocument ' --> Unsere Datenstruktur Private Type myData strVorname As String strNachname As String End Type ' --> Unser Datencontainer Private tpData(1) As myData ' --> Um Umlaute und Sonderzeichen der deutschen Sprache ' --> in einem XML Dokument zuzulassen benötigt man diese ISO Codierung Private Const strISO As String = " encoding=""iso-8859-1""" Private Sub cmd_ReadXML_Click() Dim oNode As Node Dim oNodeSub As Node Dim oRoot As IXMLDOMNodeList Dim oElemVN As IXMLDOMElement Dim oElemNN As IXMLDOMElement Dim oElemData As IXMLDOMElement Dim oElemSubData As IXMLDOMElement Dim oElemKnoten As IXMLDOMNode Dim intCounter As Integer Dim onodeRoot As Node On Error GoTo errHandler ' --> zurücksetzen des Treeview Me.TreeView1.Nodes.Clear ' --> laden des XMLDokumentes in den Speicher With oDOM .async = False Call .Load(App.Path & "\myData.xml") End With ' --> Root Node auslesen Set oRoot = oDOM.selectNodes("Personen") ' --> Schreiben der Daten in den Treeview For Each oElemKnoten In oRoot(0).childNodes Set onodeRoot = Me.TreeView1.Nodes.Add(Text:=oElemKnoten.baseName) For Each oElemData In oElemKnoten.childNodes Set oNode = Me.TreeView1.Nodes.Add(onodeRoot, tvwChild, Text:=oElemData.baseName) Set oNodeSub = Me.TreeView1.Nodes.Add(oNode, tvwChild, Text:=oElemData.Text) Next Next Exit Sub errHandler: MsgBox "Fehler: " & Err.Description, vbCritical + vbOKOnly, "Fehler" Err.Clear End Sub Private Sub cmd_WriteXML_Click() Dim oRoot As IXMLDOMElement Dim oInstruct As IXMLDOMProcessingInstruction Dim oElemVN As IXMLDOMElement Dim oElemNN As IXMLDOMElement Dim oElemData As IXMLDOMElement Dim oDocType As IXMLDOMDocumentType Dim intIDX As Integer Dim strXMLInstruct As String ' --> Bevor wir die Datei erneut schreiben versuchen wir ' --> eine bereits vorhandene Datei zu löschen On Error Resume Next Kill App.Path & "\myData.xml" On Error GoTo errHandler ' --> Hier schreiben wir die Processing Instruktionen in das Xml Dokument ' --> Dort wird die XML Version und die Codierung des Dokumentes festgelegt Set oInstruct = oDOM.createProcessingInstruction("xml", "version=""1.0""" & strISO) Call oDOM.insertBefore(oInstruct, oDOM.childNodes.Item(0)) ' --> Hier erstellen wir das Rootelement welches die Datenelement aufnehmen wird Set oRoot = oDOM.createElement("Personen") ' --> Anfügen des Root Elementes an das Dokument oDOM.appendChild oRoot ' --> Durchlaufen des Datencontainer Arrays und anfügen der Daten an das Root Element For intIDX = 0 To UBound(tpData) Set oElemData = oDOM.createElement("myData") oRoot.appendChild oElemData Set oElemVN = oDOM.createElement("Vorname") oElemData.appendChild oElemVN oElemVN.Text = tpData(intIDX).strVorname Set oElemNN = oDOM.createElement("Nachname") oElemData.appendChild oElemNN oElemNN.Text = tpData(intIDX).strNachname Next ' --> Speichern in physische Datei Call oDOM.save(App.Path & "\myData.xml") Me.cmd_ReadXML.Enabled = True Exit Sub errHandler: MsgBox "Fehler: " & Err.Description, vbCritical + vbOKOnly, "Fehler" Err.Clear End Sub Private Sub Form_Load() ' --> Instanzieren des DOMObjektes Set oDOM = New DOMDocument ' --> füllen des Datencontainer With tpData(0) .strVorname = "Stefan" .strNachname = "M" End With With tpData(1) .strVorname = "Markus" .strNachname = "S" End With ' --> Lesen der XML Datei wird erst nach erstellen dieser zugelassen Me.cmd_ReadXML.Enabled = False End Sub Private Sub Form_Unload(Cancel As Integer) ' --> Zerstören der DOM Instanz Set oDOM = Nothing End Sub Dieser Tipp wurde bereits 64.524 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |