vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Dateisystem · XML   |   VB-Versionen: VB622.11.04
Das XMLDom in VB6 benutzen

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.

Autor:   Stefan MährBewertung:     [ Jetzt bewerten ]Views:  64.523 
www.visualsoft-net.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

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:

  1. Command Button mit Text = &Write XML und Name = cmd_WriteXML
  2. Command Button mit Text = &Read XML und Name = cmd_ReadXML
  3. Treeview

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.523 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel