Écriture du contenu d'un DataSet comme données XML

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, consultez DiffGrams.

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, définissez la propriété Nested de DataRelation sur true lorsque vous ajoutez DataRelation à l’objet DataSet. Pour plus d’informations, consultez Imbrication de DataRelations.

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 code XML résultant.

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>
Attribut 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