Sie sind auf Seite 1von 3

XML-Dateien sind Textdatenlager vom Feinsten.

Dieser MSDN Quickie fr Einsteiger z eigt, wie Sie unter Visual Basic .NET Daten in XML-Dateien ablegen und wieder au slesen. Frher war das Leben einfach: Wer Daten ablegen wollte, tat dies entweder in INI-D ateien oder in proprietren Dateiformaten. Beide Wege hatten Nachteile: INI-Dateie n waren extrem unflexibel, grenbeschrnkt und sogar inhaltlich problematisch (etwa b ei fhrenden Leerzeichen eines Eintrags). In einem kurzen Zwischenspiel entstand die Idee, Benutzerdaten zentral in der Wi ndows-Registrierungsdatenbank abzulegen. Die Mglichkeiten schienen verfhrerisch: S trukturierte Datenbume, Binrdatenablage, automatische Benutzerabhngigkeit - im Prin zip keine schlechte Idee. Auf der anderen Seite: Windows ist selber so radikal v on der Registrierungsdatenbank abhngig, dass eine berladung Windows ausbremste, fe hlerhafte oder fehlende Deinstallationsprogramme Datenmll nicht aufrumten, uns so weiter: Wer schon frh von der Registry als Datengrab absah, wurde etwas misstraui sch beugelt, spter aber umso frenetischer als Visionr bejubelt. Eigene Dateiformate waren nicht wesentlich besser: Zum einen blieb ihr Aufbau ei n Geheimnis des Entwicklers, zum anderen musste die einmal fr ein Format getroffe ne Entscheidung bei Weiterentwicklung der zugehrigen Software oft genug revidiert werden. Importfilter konnten dann teilweise helfen, arbeiten jedoch im Interess e des Herstellers zumeist nur in Richtung der neueren Software. Es gibt neben noch viele weitere Grnde, sich statt der vorgestellten Mechanismen fr die Datenhaltung kleinerer Datenmengen im XML-Format zu entscheiden. Aber genu g zur Motivation, kommen wir endlich zur Technik. Und die ist dank des .NET Fram ework beeindruckend einfach in den Griff zu bekommen. Im folgenden Codebeispiel werden zwei einfache Methoden vorgestellt: Die Methode XMLWriter schreibt mithilfe der Framework-Klasse System.Xml.XmlTextWriter ein p aar triviale, strukturierte Textdaten in eine Datei "quickie.xml" - zwei kurze P ersonendatenstze, die von einem Element "Personen" eingefasst sind. Die Methode X MLReader liest diese Datei mithilfe der zugehrigen Klasse System.Xml.XmlTextReade r in allgemeiner Weise wieder aus und gibt dann die ausgelesenen Daten in ein Ko nsolenfenster oder das Debug-Fenster von Visual Studio .NET aus. Dieses kleine Beispiel kann und soll nur als motivierender Ausgangspunkt fr eigen e Ausflge dienen. Beschftigen Sie sich ruhig ein wenig mit dem Namespace System.Xm l: Bei Ihrer Arbeit mit Microsoft .NET Technologien wird er Ihnen zwangslufig imm er wieder "ber den Weg laufen". Private Sub XMLWriter() ' Auswahl einer Kodierungsart fr die Zeichenablage Dim enc As New System.Text.UnicodeEncoding ' XmlTextWriter-Objekt fr unsere Ausgabedatei erzeugen: Dim XMLobj As Xml.XmlTextWriter _ = New Xml.XmlTextWriter("quickie.xml", enc) With XMLobj ' Formatierung: 4er-Einzge verwenden .Formatting = Xml.Formatting.Indented .Indentation = 4 ' Dann fangen wir mal an: .WriteStartDocument()

' Beginn eines Elements "Personen". Darin werden wir mehrere ' Elemente "Person" unterbringen. .WriteStartElement("Personen") ' Hier kommt das erste Element "Person". Eine Person hat ' in unserem einfachen Beispiel einen Titel, einen Nach' namen und einen Vornamen. Als Demo soll uns das gengen. .WriteStartElement("Person") ' <Person .WriteAttributeString("Titel", "Dr.") .WriteAttributeString("Name", "Meyer") .WriteAttributeString("Vorname", "Hans") .WriteEndElement() ' Person /> ' Hier kommt (noch immer im Element "Personen" das zweite ' Element "Person". .WriteStartElement("Person") ' <Person .WriteAttributeString("Titel", "") .WriteAttributeString("Name", "Schmidt") .WriteAttributeString("Vorname", "Carlos") .WriteEndElement() ' Person /> ' Nachdem das Element "Personen" zwei Elemente "Person" ' erhalten hat, beenden wir die Ausgabe fr "Personen"... .WriteEndElement() ' </Personen> ' ... und schlieen das XML-Dokument (und die Datei) .Close() ' Document End With ' Und so sieht die Ergebnisdatei aus: ' ----------------------------------'<?xml version="1.0" encoding="utf-16"?> '<Personen> ' <Person Titel="Dr." Name="Meyer" Vorname="Hans" /> ' <Person Titel="" Name="Schmidt" Vorname="Carlos" /> '</Personen> End Sub

Private Sub XMLReader() ' Wir bentigen einen XmlReader fr das Auslesen der XML-Datei Dim XMLReader As Xml.XmlReader _ = New Xml.XmlTextReader("quickie.xml") ' Es folgt das Auslesen der XML-Datei With XMLReader Do While .Read ' Es sind noch Daten vorhanden ' Welche Art von Daten liegt an? Select Case .NodeType ' Ein Element Case Xml.XmlNodeType.Element Console.WriteLine("Es folgt ein Element vom Typ " & .Name)

' Alle Attribute (Name-Wert-Paare) abarbeiten If .AttributeCount > 0 Then ' Es sind noch weitere Attribute vorhanden While .MoveToNextAttribute ' nchstes Console.WriteLine("Feldname: " & .Name & _ " -> " & _ "Feldwert: " & .Value) End While End If ' Ein Text Case Xml.XmlNodeType.Text Console.WriteLine("Es folgt ein Text: " & .Value) ' Ein Kommentar Case Xml.XmlNodeType.Comment Console.WriteLine("Es folgt ein Kommentar: " & .Value) End Select Loop ' Weiter nach Daten schauen .Close() ' XMLTextReader schlieen End With ' Und so sieht das Ergebnis der Ausgabe aus: ' -----------------------------------------'Es folgt ein Element vom Typ Personen 'Es folgt ein Element vom Typ Person 'Feldname: Titel -> Feldwert: Dr. 'Feldname: Name -> Feldwert: Meyer 'Feldname: Vorname -> Feldwert: Hans 'Es folgt ein Element vom Typ Person 'Feldname: Titel -> Feldwert: 'Feldname: Name -> Feldwert: Schmidt 'Feldname: Vorname -> Feldwert: Carlos End Sub

Das könnte Ihnen auch gefallen