Partager via


Inférence des colonnes

Lors de l'inférence du schéma d'un DataSet à partir d'un document XML, une fois que ADO.NET a identifié les éléments à déduire en tant que tables, il détermine, à partir des éléments et attributs XML restants, les colonnes à déduire pour ces tables. Les informations de types de données étant disponibles uniquement avec un schéma inline, le type de données d'une colonne déduite est System.String. Les structures XML suivantes donneront des colonnes de table.

Attributs

Comme défini dans Inférence des tables, un élément assorti d'attributs sera déduit en tant que table. Les attributs de cet élément seront ensuite déduits en tant que colonnes de cette table. La propriété ColumnMapping des colonnes aura pour valeur MappingType.Attribute. De cette façon, les noms des colonnes seront écrits en tant qu'attributs, ce qui sera utile si le schéma doit être réécrit en XML. Les valeurs des attributs sont stockées dans une ligne de la table. Examinons, par exemple, le code XML suivant :

<DocumentElement>
  <Element1 attr1="value1" attr2="value2"/>
</DocumentElement>

Le processus d'inférence produira une table nommée « Element1 », avec deux colonnes, « attr1 » et « attr2 ». La propriété ColumnMapping des deux colonnes aura pour valeur MappingType.Attribute.

DataSet : DocumentElement

Table : Element1

attr1 attr2
value1 value2

Éléments dépourvus d'attributs ou d'éléments enfants

Si un élément ne comporte ni éléments enfants, ni attributs, il sera déduit en tant que colonne. La propriété ColumnMapping de la colonne aura pour valeur MappingType.Element. Le texte des éléments enfants est stocké dans une ligne de la table. Examinons, par exemple, le code XML suivant :

<DocumentElement>
  <Element1>
    <ChildElement1>Text1</ChildElement1>
    <ChildElement2>Text2</ChildElement2>
  </Element1>
</DocumentElement>

Le processus d'inférence produira une table nommée « Element1 », avec deux colonnes, « ChildElement1 » et « ChildElement2 ». La propriété ColumnMapping des deux colonnes aura pour valeur MappingType.Element.

DataSet : DocumentElement

Table : Element1

ChildElement1 ChildElement2
Text1 Text2

Voir aussi

Inférence de la structure relationnelle d'un DataSet à partir de XML | Chargement d'un DataSet à partir de XML | Chargement des informations de schéma d'un DataSet à partir de XML | XML et le DataSet | Création et utilisation de DataSets