Schreiben von DataSet-Inhalten als XML-Daten

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

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

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

Dim xmlDS As String = custDS.GetXml()  
string xmlDS = custDS.GetXml();  

GetXml gibt die XML-Darstellung des DataSet 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 in 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 Parameters mit XmlWriteMode angeben, wie die XML-Ausgabe geschrieben werden soll.

In der folgenden Tabelle werden die Optionen für XmlWriteMode gezeigt.

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

Wenn Sie eine XML-Darstellung eines DataSet schreiben, das DataRelation-Objekte enthält, sollen bei den resultierenden XML-Daten für die einzelnen Beziehungen wahrscheinlich die untergeordneten Zeilen in den zugehörigen übergeordneten Elementen geschachtelt sein. Dies kann durch das Festlegen der Nested-Eigenschaft der DataRelation auf true erreicht werden, wenn Sie die DataRelation zum DataSet hinzufügen. Weitere Informationen finden Sie unter Schachteln von DataRelations.

Im Folgenden sind zwei Beispiele aufgeführt, die zeigen, wie die XML-Darstellung eines DataSet 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)  
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);  
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")  
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)  
xmlSW.Close()  
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. In der folgenden Tabelle werden die verschiedenen MappingType-Werte für die ColumnMapping-Eigenschaft einer Tabellenspalte und das resultierende XML angezeigt.

"MappingType"-Wert BESCHREIBUNG
Element Dies ist die Standardoption. 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>
Attribut 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 in der XML-Ausgabe nicht geschrieben.

Siehe auch