Inférence des colonnes (ADO.NET)
Après avoir déterminé les éléments à déduire en tant que tables pour un objet DataSet à partir d'un document XML, ADO.NET déduit les colonnes pour 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ées pour chaque élément simpleType. Dans les versions précédentes, le type de données d'un élément simpleType déduit était toujours xsd:string.
Migration et compatibilité ascendante
La méthode ReadXml prend un argument de type InferSchema. Cet argument vous permet de spécifier un 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
Assure la compatibilité ascendante en déduisant toujours un type simple comme l'objet String.InferTypedSchema
Déduit un type de données fortement typées. 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 DataSet existant.
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
Concepts
Chargement d'un DataSet à partir de XML (ADO.NET)
Chargement des informations de schéma d'un DataSet à partir de XML (ADO.NET)
Autres ressources
Déduction de la structure relationnelle d'un DataSet à partir de XML (ADO.NET)