Code-Beispiel

Ausgabe eines DataSet-Objekts als XML

Ein Beispiel zum Einsatz der Klasse System.Data.DataSet aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg

Beschreibung

Die Unterstützung der Extensible Markup Language (XML) ist ein wichtiges Konzept von ADO.NET. Die DataSet-Klasse tauscht Daten in Form von XML-Dokumenten mit ihrer Umwelt aus. Daten in einem DataSet können mit den Möglichkeiten von XML bearbeitet werden.

Obwohl oft behauptet ist es nicht richtig, dass ADO.NET die Daten in einem DataSet auch intern in XML-Datenstrukturen speichert.

Ausgabe eines DataSets als XML
Die DataSet-Klasse besitzt zwei Attribute und zwei Methoden zum Austausch mit XML:
  • GetXml() liefert einen String mit dem Inhalt des DataSet-Objekts in Form eines XML-Dokuments
  • GetXmlSchema() liefert einen String mit der Struktur der Daten im DataSet in Form eines XSD-Schemas
  • WriteXml() schreibt die XML-Daten und – optional – das zugehörige XSD-Schema in eine Datei (spezifiziert durch einen URL), ein Stream-Objekt, ein TextWriter-Objekt oder ein XMLWriter-Objekt. Mit dem optionalen zweiten Parameter XmlWriteMode.DiffGram wird ein XML-Dokument im DiffGram-Format erzeugt. Ein DiffGram dokumentiert nicht nur den aktuellen Zustand eines DataSet, sondern auch alle ausgeführten Änderungen.
  • ReadXml() liest XML-Daten in ein DataSet-Objekt ein. Mögliche Eingabequellen sind eine Datei (spezifiziert durch einen URL), ein Stream-Objekt, ein TextWriter-Objekt oder ein XmlWriter-Objekt. Die XML-Daten müssen ein XSD-Schema enthalten.

Persistenz von Daten
Classic-ADO unterstützt zwei Formen der Persistierung von Daten: Speicherung in einer Datei oder Speicherung in einem Stream (ab ADO 2.5). Bei der Abspeicherung in einer Datei stehen folgende Formate zur Verfügung: Advanced Data Tablegram (ADTG) und Extensible Markup Language (XML).
ADO.NET unterstützt nur noch XML. Eine Stream-Klasse gibt es im Namespace System.Data nicht. Die XML-Daten können auf jede beliebige Art weiterverarbeitet werden, einschließlich der Möglichkeit, sie mit einem FileStream-Objekt im Dateisystem persistent zu machen.

Beispiel
Die folgende Routine gibt zunächst das XML-Schema eines DataSet-Objekts aus und danach den Inhalt als XML-Dokument.

Programmcodebeispiel in Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Ausgabe eines DataSet-Objekts als XML
' (C) Holger@Schwichtenberg.de
' ============================
Sub ADONET_DSXML1()
Dim DS As System.Data.DataSet
Dim Com As System.Data.OleDb.OleDbCommand
Dim SQL As String

outtitle("Ausgabe eines DatSet als XML")

' --- DataSet erzeugen
DS = New System.Data.DataSet()

' --- Tabelle einlesen
SQL = "SELECT * FROM Produkte where name like 'Amiga%'"
Dim DA As System.Data.OleDb.OleDbDataAdapter
DA = New System.Data.OleDb.OleDbDataAdapter(SQL, CONNSTRING)
DA.Fill(DS, "EDV-Antik")

' --- XML ausgeben
out("--- Schema:")
out(DS.GetXmlSchema)
out("--- Daten:")
out(DS.GetXml)

End Sub

Weiteres Programmcodebeispiel in CSharp (C#)

using System;
using System.Data;
using System.Data.OleDb;
using System.Xml;
using System.IO;

using FCL_Buch;

namespace FCLBuch._SystemData {

public class SamplesADONETXML {

public void ADONET_DataSetXML1() {

// DataSet als XML ausgeben
FclOutput.PrintOutSubHeader( "Ausgabe eines DatSet als XML" );

// DataSet erzeugen
DataSet ds = new DataSet();

// Tabelle einlesen
string sql = "SELECT * FROM Produkte where name like 'Amiga%'";
OleDbDataAdapter da = new OleDbDataAdapter( sql, ADONET_Globals.ConnectionString );
da.Fill( ds, "EDV-Antik" );

// XML ausgeben
FclOutput.PrintOutSubHeader( "Schema:" );
FclOutput.PrintOut( ds.GetXmlSchema() );
FclOutput.PrintOutSubHeader( "Daten:" );
FclOutput.PrintOut(ds.GetXml() );
}
}
}

Hinweise

Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B. Console.WriteLine() einsetzen.


 

Querverweise

 Liste aller Codebeispiele  Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.Data.DataSet'  Übersicht über den FCL-Namensraum 'System.Data'  .NET & Visual Studio Community Portal

Buchtipp

Buchcover PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch (6. Auflage Juni 2024 (10. Auflage Gesamtreihe)) PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
Autor(en): Dr. Holger Schwichtenberg
Erschienen 2024
Umfang: 1426 Seiten
ISBN: 3446481958

Beratung & Support

Schulungen

  Anfrage für eine individuelle Schulung zum Thema VISUAL BASIC C#   Gesamter Schulungsthemenkatalog

Fachbücher

  Alle unsere aktuellen Fachbücher   E-Book-Abo für ab 99 Euro im Jahr