Écriture d'un DataSet sous forme de données XML
Dans ADO.NET, vous pouvez écrire une représentation XML d'un DataSet, 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 du DataSet, ainsi que les définitions des relations et des contraintes.
Lorsqu'un DataSet est écrit sous forme de données XML, les lignes du DataSet sont écrites dans leur version actuelle. Toutefois, le 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 du 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 du DataSet. Pour obtenir la représentation XML du DataSet sous forme de chaîne, utilisez la méthode GetXml comme le montre l'exemple suivant.
Dim xmlDS As String = custDS.GetXml()
[C#]
string xmlDS = custDS.GetXml();
GetXml retourne la représentation XML du DataSet sans informations de schéma. Pour écrire les informations de schéma du DataSet (sous forme de données XSD) dans une chaîne, utilisez GetXmlSchema.
Pour écrire un 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.
XmlWriteMode | Description |
---|---|
IgnoreSchema | Écrit le contenu actuel du DataSet sous forme de données XML, sans schéma XML. Il s'agit de l'option par défaut. |
WriteSchema | Écrit le contenu actuel du DataSet sous forme de données XML, avec la structure relationnelle en XSD inline. |
DiffGram | Écrit l'intégralité du DataSet sous forme de DiffGram, en incluant les valeurs d'origine et les valeurs actuelles. Pour plus d'informations, consultez DiffGrams. |
Lorsque vous écrirez une représentation XML d'un 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 au DataSet. Pour plus d'informations, consultez DataRelations imbriqués.
Vous trouverez ci-dessous deux exemples illustrant l'écriture de la représentation XML d'un 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)
[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();
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.
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. Exemple :
|
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. Exemple :
|
SimpleContent | Le contenu de la colonne est écrit sous forme de texte dans l'élément XML de la ligne actuelle. Exemple :
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 ne sera pas écrite dans la sortie XML. |
Voir aussi
XML et le DataSet | DiffGrams | DataRelations imbriqués | Écriture des informations de schéma d'un DataSet sous forme de données XSD (schéma XML) | Création et utilisation de DataSets