Partager via


Écriture du contenu du 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 dans le code XML, elles sont écrites à l’aide du langage XSD (XML Schema Definition Language). Le schéma contient les définitions de tables de DataSet ainsi que les définitions de relation et de contrainte.

Lorsqu’un DataSet est écrit en tant que données XML, les lignes dans le DataSet sont écrites dans leurs versions actuelles. Toutefois, il DataSet peut également être écrit en tant que DiffGram afin que les valeurs actuelles et d’origine des lignes soient incluses.

La représentation XML du DataSet fichier peut être écrite dans un fichier, un flux, un XmlWriter ou une chaîne. Ces choix offrent une grande flexibilité pour la façon dont vous transportez la représentation XML du DataSet. Pour obtenir la représentation XML de la DataSet chaîne sous forme de chaîne, utilisez la GetXml méthode comme illustré dans l’exemple suivant.

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

GetXml renvoie la représentation XML de DataSet sans informations de schéma. Pour écrire les informations de schéma de l’objet DataSet (en tant que schéma XML) dans une chaîne, utilisez GetXmlSchema.

Pour écrire un DataSet à 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, transmettez une chaîne contenant un nom de fichier, un objet System.IO.TextWriter , et ainsi de suite. Vous pouvez passer un deuxième paramètre facultatif d’un XmlWriteMode pour spécifier la façon dont la sortie XML doit être écrite.

Le tableau suivant présente les options de XmlWriteMode.

Option XmlWriteMode Descriptif
IgnoreSchema Écrit le contenu actuel de DataSet au format 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’intégralité DataSet sous forme de DiffGram, y compris les valeurs d’origine et actuelles. Pour plus d’informations, consultez DiffGrams.

Lors de l’écriture d’une représentation XML d’un objet qui contient DataSet des DataRelation objets, vous souhaiterez probablement que le code XML résultant ait les lignes enfants de chaque relation imbriquées dans leurs éléments parents associés. Pour ce faire, définissez la propriété Nested de DataRelation sur true lorsque vous ajoutez DataRelation à DataSet. Pour plus d’informations, consultez Nesting DataRelations.

Voici deux exemples de la façon d’écrire la représentation XML d’un DataSet dans un fichier. Le premier exemple transmet le nom de fichier pour le code XML résultant sous forme de chaîne à WriteXml. Le deuxième exemple transmet 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, attributs et 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 ColumnMapping propriété de l’objet DataColumn . Le tableau suivant présente les différentes MappingType valeurs de la ColumnMapping propriété d’une colonne de table et le code XML obtenu.

Valeur MappingType Descriptif
Élément Il s’agit de la valeur par défaut. La colonne est écrite en tant qu’élément XML où ColumnName est le nom de l’élément et le contenu de la colonne sont écrits en tant que texte de l’élément. Par exemple:

<ColumnName>Column Contents</ColumnName>
Attribut La colonne est écrite en tant qu’attribut XML de l’élément XML pour la ligne active où ColumnName est le nom de l’attribut et le contenu de la colonne sont écrits comme valeur de l’attribut. Par exemple:

<RowElement ColumnName="Column Contents" />
SimpleContent Le contenu de la colonne est écrit en tant que texte dans l’élément XML de la ligne active. Par exemple:

<RowElement>Column Contents</RowElement>

Notez que SimpleContent ne peut pas être défini pour une colonne d'une table qui a Element colonnes ou des relations imbriquées.
Caché La colonne n’est pas écrite dans la sortie XML.

Voir aussi