Freigeben über


Schreiben eines DataSets als XML-Daten

Sie können in ADO.NET die XML-Darstellung eines DataSets mit oder ohne dessen Schema schreiben. Wenn das XML-Dokument Inline-Schemainformationen enthält, werden diese mit der XML-Schema Definition (XSD)-Sprache geschrieben. Das Schema enthält die Tabellendefinitionen des DataSets sowie die Beziehungs- und Einschränkungsdefinitionen.

Beim Schreiben eines DataSets als XML-Daten werden die aktuellen Versionen der Zeilen im DataSet geschrieben. Das DataSet kann jedoch auch als DiffGram geschrieben werden, so dass die aktuellen und die ursprünglichen Werte der Zeilen aufgenommen werden.

Die XML-Darstellung des DataSets kann in eine Datei, einen Stream, einen XmlWriter oder eine Zeichenfolge geschrieben werden. Durch diese Auswahl sind Sie äußerst flexibel bei der Übertragung der XML-Darstellung des DataSets. Verwenden Sie die GetXml-Methode wie im folgenden Beispiel gezeigt, um die XML-Darstellung des DataSets als Zeichenfolge zu erhalten.

Dim xmlDS As String = custDS.GetXml()
[C#]
string xmlDS = custDS.GetXml();

GetXml gibt die XML-Darstellung des DataSets ohne Schemainformationen zurück. Verwenden Sie GetXmlSchema, um die Schemainformationen aus dem DataSet (als XML-Schema) in eine Zeichenfolge zu schreiben.

Verwenden Sie die WriteXml-Methode, um ein DataSet in eine Datei, einen Stream oder einen XmlWriter zu schreiben. Der erste Parameter, den Sie an die WriteXml-Methode übergeben, ist das Ziel der XML-Ausgabe. Übergeben Sie z. B. eine Zeichenfolge mit einem Dateinamen, ein System.IO.TextWriter-Objekt usw. Sie können durch Übergabe eines optionalen zweiten XmlWriteMode-Parameters angeben, wie die XML-Ausgabe geschrieben werden soll.

Die folgende Tabelle zeigt die Optionen für XmlWriteMode.

XmlWriteMode Beschreibung
IgnoreSchema Schreibt den aktuellen Inhalt des DataSets ohne XML-Schema als XML-Daten. Dies ist die Standardeinstellung.
WriteSchema Schreibt den aktuellen Inhalt des DataSets als XML-Daten mit der relationalen Struktur als Inline-XML-Schema.
DiffGram Schreibt das gesamte DataSet als DiffGram, einschließlich der ursprünglichen und aktuellen Werte. Weitere Informationen hierzu finden Sie unter DiffGrams.

Wenn Sie eine XML-Darstellung eines DataSets schreiben, das DataRelation-Objekte enthält, sollen bei den sich ergebenden XML-Daten für die einzelnen Beziehungen wahrscheinlich die untergeordneten Zeilen in den zugehörigen übergeordneten Elementen geschachtelt sein. Dazu müssen Sie für die Nested-Eigenschaft der DataRelation den Wert True festlegen, wenn Sie die DataRelation zum DataSet hinzufügen. Weitere Informationen hierzu finden Sie unter Geschachtelte DataRelations.

Im Folgenden sind zwei Beispiele aufgeführt, die zeigen, wie die XML-Darstellung eines DataSets in eine Datei geschrieben wird. Das erste Beispiel übergibt den Dateinamen für das resultierende XML-Dokument als Zeichenfolge an WriteXml. Das zweite Beispiel übergibt ein System.IO.StreamWriter-Objekt.

custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema)
[C#]
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);
[Visual Basic]
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)
xmlSW.Close()
[C#]
System.IO.StreamWriter xmlSW = new System.IO.StreamWriter("Customers.xml");
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema);
xmlSW.Close();

Zuordnen von Spalten zu XML-Elementen, -Attributen und -Text

Sie können mit der ColumnMapping-Eigenschaft des DataColumn-Objekts angeben, wie eine Spalte einer Tabelle im XML-Format dargestellt wird. Die folgende Tabelle zeigt die verschiedenen MappingType-Werte für die ColumnMapping-Eigenschaft einer Tabellenspalte und das resultierende XML-Objekt.

MappingType Beschreibung
Element Dies ist die Standardeinstellung. Die Spalte wird als XML-Element geschrieben, wobei ColumnName der Name des Elements ist und der Inhalt der Spalte als Text des Elements geschrieben wird. Beispiel:
<ColumnName>Column Contents</ColumnName>
Attribute Die Spalte wird als XML-Attribut des XML-Elements für die aktuelle Zeile geschrieben, wobei ColumnName der Name des Attributs ist und der Inhalt der Spalte als Wert des Attributs geschrieben wird. Beispiel:
<RowElement ColumnName="Column Contents" />
SimpleContent Der Inhalt der Spalte wird für die aktuelle Zeile als Text in das XML-Element geschrieben. Beispiel:
<RowElement>Column Contents</RowElement>

Beachten Sie, dass SimpleContent nicht für eine Spalte einer Tabelle festgelegt werden kann, die Element-Spalten oder geschachtelte Beziehungen besitzt.

Hidden Die Spalte wird nicht in die XML-Ausgabe geschrieben.

Siehe auch

XML und das DataSet | DiffGrams | Geschachtelte DataRelations | Schreiben von DataSet-Schemainformationen als XML-Schema (XSD) | Erstellen und Verwenden von DataSets