Écriture du contenu d'un DataSet sous forme de données XML (ADO.NET)

Dans ADO.NET, vous pouvez écrire une représentation XML d'un objetDataSet, avec ou sans son schéma. Si les informations de schéma sont incluses inline avec le XML, elles sont écrites à l'aide du langage XSD (XML Schema Definition). Le schéma contient les définitions des tables de l'objet DataSet, ainsi que les définitions des relations et des contraintes.

Lorsqu'un objet DataSet est écrit sous forme de données XML, les lignes de l'objet DataSet sont écrites dans leur version actuelle. Toutefois, l'objet DataSet peut aussi être écrit sous la forme d'un DiffGram pour que les valeurs actuelles comme les valeurs d'origine des lignes soient incluses.

La représentation XML de l'objet DataSet peut être écrite dans un fichier, un flux, un XmlWriter ou une chaîne. Ces différentes possibilités offrent une grande souplesse pour le transport de la représentation XML de l'objet DataSet. Pour obtenir la représentation XML de l'objet DataSet sous forme de chaîne, utilisez la méthode GetXml comme le montre l'exemple suivant.

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

GetXml retourne la représentation XML de l'objet DataSet sans informations de schéma. Pour écrire les informations de schéma à partir de l'objet DataSet (sous forme de schéma XML) dans une chaîne, utilisez GetXmlSchema.

Pour écrire un objet DataSet dans un fichier, un flux ou un XmlWriter, utilisez la méthode WriteXml. Le premier paramètre que vous passez à WriteXml est la destination de la sortie XML. Par exemple, passez une chaîne contenant un nom de fichier, un objet System.IO.TextWriter, etc. Vous pouvez passer un deuxième paramètre facultatif d'un XmlWriteMode pour spécifier comment la sortie XML devra être écrite.

Le tableau suivant présente les options de XmlWriteMode.

Option XmlWriteMode

Description

IgnoreSchema

Écrit le contenu actuel de l'objet DataSet sous forme de données XML, sans schéma XML. Il s'agit de la valeur par défaut.

WriteSchema

Écrit le contenu actuel de l'objet DataSet en tant que données XML, avec la structure relationnelle comme schéma XML inline.

DiffGram

Écrit l'ensemble de l'objet DataSet en tant que DiffGram, y compris les valeurs d'origine et actuelle. Pour plus d'informations, voir DiffGrams (ADO.NET).

Lorsque vous écrirez une représentation XML d'un objet DataSet contenant des objets DataRelation, vous souhaiterez certainement que le XML obtenu imbrique les lignes enfants de chaque relation dans leur élément parent. Pour ce faire, assignez à la propriété Nested de DataRelation la valeur true lorsque vous ajoutez le DataRelation à l'objet DataSet. Pour plus d'informations, voir Imbrication de DataRelations (ADO.NET).

Vous trouverez ci-après deux exemples illustrant l'écriture de la représentation XML d'un objet DataSet dans un fichier. Le premier exemple passe en tant que chaîne à WriteXml le nom de fichier du XML obtenu. Le second exemple passe un objet System.IO.StreamWriter.

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();

Mappage de colonnes à des éléments, des attributs et du texte XML

Vous pouvez spécifier la façon dont une colonne d'une table est représentée en XML à l'aide de la propriété ColumnMapping de l'objet DataColumn. Le tableau suivant présente les différentes valeurs de MappingType pour la propriété ColumnMapping d'une colonne de table et le XML obtenu.

Valeur MappingType

Description

Element

Il s'agit de la valeur par défaut. La colonne est écrite sous la forme d'un élément XML, où ColumnName représente le nom de l'élément et le contenu de la colonne est écrit en tant que texte de l'élément. Par exemple :

<ColumnName>Column Contents</ColumnName>

Attribute

La colonne est écrite sous la forme d'un attribut XML de l'élément XML de la ligne actuelle, où ColumnName représente le nom de l'attribut et le contenu de la colonne est écrit en tant que valeur de l'attribut. Par exemple :

<RowElement ColumnName="Column Contents" />

SimpleContent

Le contenu de la colonne est écrit sous forme de texte dans l'élément XML de la ligne actuelle. Par exemple :

<RowElement>Column Contents</RowElement>

Notez que SimpleContent ne peut pas être défini pour une colonne d'une table qui comporte des colonnes Element ou des relations imbriquées.

Hidden

La colonne n'est pas écrite dans la sortie XML.

Voir aussi

Concepts

DiffGrams (ADO.NET)

Imbrication de DataRelations (ADO.NET)

Écriture des informations de schéma d'un DataSet sous la forme de données XSD (ADO.NET)

Autres ressources

Utilisation de XML dans un DataSet (ADO.NET)

Objets DataSet, DataTable et DataView (ADO.NET)