Odvozování sloupců
Jakmile ADO.NET určí z dokumentu XML, které prvky se mají odvodit jako tabulky pro tabulku DataSet, pak odvodí sloupce pro tyto tabulky. ADO.NET 2.0 zavedl nový modul pro odvozování schématu, který odvodí datový typ silného typu pro každý element simpleType . V předchozích verzích byl datový typ odvozeného elementu simpleType vždy xsd:string.
Migrace a zpětná kompatibilita
Metoda ReadXml přebírá argument typu InferSchema. Tento argument umožňuje určit chování odvozování kompatibilní s předchozími verzemi. Dostupné hodnoty výčtu InferSchema jsou uvedeny v následující tabulce.
InferSchema
Poskytuje zpětnou kompatibilitu tím, že vždy odvodí jednoduchý typ jako String.
InferTypedSchema
Odvodí datový typ silného typu. Vyvolá výjimku, pokud je použita s .DataTable
IgnoreSchema
Ignoruje všechna vložená schémata a načte data do existujícího DataSet schématu.
Atributy
Jak je definováno v odvozování tabulek, bude prvek s atributy odvozen jako tabulka. Atributy tohoto elementu se pak odvozují jako sloupce tabulky. Vlastnost ColumnMapping sloupců bude nastavena na MappingType.Attribute, aby se zajistilo, že názvy sloupců budou zapsány jako atributy, pokud je schéma zapsáno zpět do XML. Hodnoty atributů jsou uloženy v řádku v tabulce. Představte si například následující kód XML:
<DocumentElement>
<Element1 attr1="value1" attr2="value2"/>
</DocumentElement>
Proces odvození vytvoří tabulku s názvem Element1 se dvěma sloupci, attr1 a attr2. Vlastnost ColumnMapping obou sloupců bude nastavena na MappingType.Attribute.
Datová sada: DocumentElement
Tabulka: Element1
attr1 | attr2 |
---|---|
hodnota1 | hodnota2 |
Prvky bez atributů nebo podřízených elementů
Pokud prvek nemá žádné podřízené prvky nebo atributy, bude odvozen jako sloupec. Vlastnost ColumnMapping sloupce bude nastavena na MappingType.Element. Text pro podřízené prvky je uložen v řádku v tabulce. Představte si například následující kód XML:
<DocumentElement>
<Element1>
<ChildElement1>Text1</ChildElement1>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
Proces odvozování vytvoří tabulku s názvem Element1 se dvěma sloupci, ChildElement1 a ChildElement2. Vlastnost ColumnMapping obou sloupců bude nastavena na MappingType.Element.
Datová sada: DocumentElement
Tabulka: Element1
ChildElement1 | ChildElement2 |
---|---|
Text 1 | Text 2 |