次の方法で共有


列の推論

ADO.NET、 DataSetのテーブルとして推論する要素を XML ドキュメントから決定した後、それらのテーブルの列を推論します。 ADO.NET 2.0 では、 simpleType 要素ごとに厳密に型指定されたデータ型を推論する新しいスキーマ推論エンジンが導入されました。 以前のバージョンでは、推論された simpleType 要素のデータ型は常に xsd:string でした。

移行と下位互換性

ReadXml メソッドは、InferSchema 型の引数を受け取ります。 この引数を使用すると、以前のバージョンと互換性のある推論動作を指定できます。 InferSchema 列挙に使用できる値を次の表に示します。

InferSchema
常に単純型を Stringとして推論することで、下位互換性を提供します。

InferTypedSchema
厳密に型指定されたデータ型を推論します。 DataTableで使用すると例外が発生します。

IgnoreSchema
インライン スキーマを無視し、既存の DataSet スキーマにデータを読み取ります。

属性

推論 テーブルで定義されているように、属性を持つ要素はテーブルとして推論されます。 その後、その要素の属性がテーブルの列として推論されます。 スキーマが XML に書き戻された場合に列名が属性として書き込まれるように、列の ColumnMapping プロパティは MappingType.Attribute に設定されます。 属性の値は、テーブル内の行に格納されます。 たとえば、次の XML を考えてみましょう。

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

推論プロセスでは、attr1attr2 の 2 つの列を持つ Element1 という名前のテーブルが生成されます。 両方の 列の ColumnMapping プロパティは MappingType.Attribute に設定されます。

データセット: DocumentElement

テーブル: Element1

attr1 attr2
value1 value2

属性または子要素のない要素

要素に子要素または属性がない場合は、列として推論されます。 列の ColumnMapping プロパティは MappingType.Element に設定されます。 子要素のテキストは、テーブル内の行に格納されます。 たとえば、次の XML を考えてみましょう。

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

推論プロセスでは、ChildElement1ChildElement2 の 2 つの列を持つ Element1 という名前のテーブルが生成されます。 両方の列の ColumnMapping プロパティは MappingType.Element に設定されます。

データセット: DocumentElement

テーブル: Element1

ChildElement1 ChildElement2
テキスト1 テキスト2

こちらも参照ください