Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Une fois que ADO.NET a déterminé à partir d’un document XML les éléments à déduire en tant que tables pour un DataSet, il déduit ensuite les colonnes de ces tables. ADO.NET 2.0 a introduit un nouveau moteur d’inférence de schéma qui déduit un type de données fortement typé pour chaque simpleType élément. Dans les versions précédentes, le type de données d’un élément déduit simpleType était toujours xsd :string.
Migration et compatibilité descendante
La ReadXml méthode prend un argument de type InferSchema. Cet argument vous permet de spécifier le comportement d’inférence compatible avec les versions précédentes. Les valeurs disponibles pour l’énumération InferSchema sont indiquées dans le tableau suivant.
InferSchema Fournit une compatibilité descendante en inférant toujours un type simple comme String.
InferTypedSchema Déduit un type de données fortement typé. Lève une exception s'il est utilisé avec un objet DataTable.
IgnoreSchema Ignore tout schéma inline et lit les données dans le schéma existant DataSet .
Attributs
Comme défini dans Inferring Tables, un élément avec des attributs est déduit sous la forme d’une table. Les attributs de cet élément seront ensuite déduits en tant que colonnes pour la table. La ColumnMapping propriété des colonnes est définie sur MappingType.Attribute pour vous assurer que les noms de colonnes seront écrits en tant qu’attributs si le schéma est réécrit dans XML. Les valeurs des attributs sont stockées dans une ligne de la table. Par exemple, considérez le code XML suivant :
<DocumentElement>
<Element1 attr1="value1" attr2="value2"/>
</DocumentElement>
Le processus d’inférence génère une table nommée Element1 avec deux colonnes, attr1 et attr2. La ColumnMapping propriété des deux colonnes est définie sur MappingType.Attribute.
Jeu de données: DocumentElement
Table: Élément1
| attr1 | attr2 |
|---|---|
| valeur1 | valeur2 |
É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 ColumnMapping propriété de la colonne est définie sur MappingType.Element. Le texte des éléments enfants est stocké dans une ligne de la table. Par exemple, considérez le code XML suivant :
<DocumentElement>
<Element1>
<ChildElement1>Text1</ChildElement1>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
Le processus d’inférence produit une table nommée Element1 avec deux colonnes, ChildElement1 et ChildElement2. La ColumnMapping propriété des deux colonnes est définie sur MappingType.Element.
Jeu de données: DocumentElement
Table: Élément1
| ChildElement1 | ChildElement2 |
|---|---|
| Texte1 | Texte2 |