列の推論
XML ドキュメントから DataSet のスキーマを推論するときには、ADO.NET では、まずテーブルとして推論する要素を決定します。その後、残りの XML の要素と属性から、それらのテーブルに対して推論する列を決定します。データ型情報を利用できるのはインライン スキーマを使用する場合だけなので、推論される列のデータ型は System.String になります。次に示すいくつかの XML 構造は、テーブルの列として推論されます。
属性
「テーブルの推論」で説明したとおり、属性を持つ要素は、テーブルとして推論されます。その要素の属性は、そのテーブルの列として推論されます。スキーマが XML に書き戻される場合に、列の名前が確実に属性として書き込まれるように、推論された列の ColumnMapping プロパティは MappingType.Attribute に設定されます。属性の値は、テーブルの行に格納されます。たとえば、次のような XML があるとします。
<DocumentElement>
<Element1 attr1="value1" attr2="value2"/>
</DocumentElement>
推論プロセスにより、"attr1" および "attr2" の 2 つの列を持つ "Element1" という名前のテーブルが生成されます。2 つの列の ColumnMapping プロパティは、MappingType.Attribute に設定されます。
DataSet : DocumentElement
Table : Element1
attr1 | attr2 |
---|---|
value1 | value2 |
属性または子の要素を持たない要素
要素に子の要素または属性がない場合、その要素は列として推論されます。推論された列の ColumnMapping プロパティは、MappingType.Element に設定されます。これらの要素のテキストは、テーブルの行に格納されます。たとえば、次のような XML があるとします。
<DocumentElement>
<Element1>
<ChildElement1>Text1</ChildElement1>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
推論プロセスにより、"ChildElement1" および "ChildElement2" という 2 つの列を持つ "Element1" という名前のテーブルが生成されます。2 つの列の ColumnMapping プロパティは、MappingType.Element に設定されます。
DataSet : DocumentElement
Table : Element1
ChildElement1 | ChildElement2 |
---|---|
Text1 | Text2 |
参照
XML からの DataSet リレーショナル構造の推論 | XML からの DataSet の読み込み | XML の DataSet スキーマ情報の読み込み | XML と DataSet | DataSet の作成および使用