Чтение онлайн

на главную

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

<QuantityPerUnit>10 boxes x 20 bags</QuantityPerUnit>

<UnitPrice>18</UnitPrice>

<UnitsInStock>39</UnitsInStock>

<UnitsOnOrder>0</UnitsOnOrder>

<ReorderLevel>10</ReorderLevel>

<Discontinued>false</Discontinued>

 </products>

 <products>

<ProductID>2</ProductID>

<ProductName>Chang</ProductName>

<SupplierID>1</SupplierID>

<CategoryID>1</CategoryID>

<QuantityPerUnit>24 - 12 oz bottles</QuantityPerUnit>

<UnitPrice>19</UnitPrice>

<UnitsInStock>17</UnitsInStock>

<UnitsOnOrder>40<UnitsOnOrder>

<ReorderLevel>25</ReorderLevel>

<Discontinued>false</Discontinued>

 </products>

 <suppliers>

<SupplierID>1</SupplierID>

<CompanyName>Exotiс Liquids</CompanyName>

<ContactName>Charlotte Cooper</ContactName>

<ContactTitle>Purchasing Manager</ContactTitle>

<Address>49 Gilbert St.</Address>

<City>London</City>

<PostalCode>EC1 4SD</PostalCode>

<Country>UK</Country>

<Phone>(171) 555-2222</Phone>

 </suppliers>

 <suppliers>

<Supplier ID>2</SupplierID>

<CompanyName>New Orleans Cajun Delights</CompanyName>

<ContactName>Shelley Burke</ContactName>

<ContactTitle>Order Adminisirator</ContactTitle>

<Address>P.O. Box 78934</Address>

<City>New Orleans</City>

<Region>LA</Region>

<PostalCode>70117</PostalCode>

<Country>USA</Country>

<Phone>(100) 555-4822</Phone>

<HomePage>#CAJUN.HTM#</HomePage>

 </suppliers>

</XMLProducts>

Эта

схема включает в себя обе таблицы данных
DataTables
, которые находились в
DataSet
. Данные также содержат все данные из обеих таблиц. Несколько продуктов и поставщиков были удалены из окончательного файла, чтобы сэкономить пространство. Как и раньше, можно сохранить только схему или только данные, передавая соответствующий параметр
XmlWriteMode
.

Преобразование документа XML в данные ADO.NET

Предположим что имеется документ XML, который нужно поместить в

DataSet
ADO.NET. И вы хотите сделать это так. чтобы можно было загрузить XML в базу данных, или, может быть, связать данные с управляющим элементом данных .NET, таким как
DataGrid
. Таким образом, можно будет на самом деле использовать документ XML в качестве хранилища данных, и можно будет полностью исключить накладные
расходы, связанные с базой данных. Вот некоторый код для начала (
ADOSample4
):

private void button1_Click(object sender, System.EventArgs e) {

 // создать новое множество данных (DataSet)

 DataSet ds=new DataSet("XMLProducts");

 //считать документ Xml в Dataset

 ds.ReadXml("..\\..\\..\\prod.xml");

 //загрузить данные в таблицу

 detaGrid1.DataSource=ds;

 dataGrid1.DataMember="products";

 //создать новый XmlDataDocument

 doc=new XmlDataDocument(ds);

 //загрузить имена продуктов в окно списка

 XmlNodeList nodeLst=doc.SelectNodes("//ProductName");

 foreach(XmlNode nd in nodeLst) listBox1.Items.Add(nd.InnerXml);

}

Действительно, просто. Создается экземпляр нового объекта

DataSet
. Вызывается метод
ReadXml
, и XML оказывается в
DataTable
в
DataSet
. Как и методы
WriteXml
,
ReadXml
имеет параметр
XmlReadMode
и пару дополнительных опций в
XmlReadMode
. Они приводятся в следующей таблице:

Имя перечисления Описание
Auto
Задает для
XmlReadMode
наиболее подходящее значение. Если данные находятся в формате
DiffGram
, выбирается
DiffGram
. Если схема уже была прочитана, или если обнаружена подставляемая схема, то выбирается
ReadSchema
. Если с
DataSet
не связано ни одной схемы и не обнаружена подставляемая схема, то выбирается
IgnoreSchema
.
DiffGram
Считывает в документ
DiffGram
и применяет изменения к
DataSet
.
DiffGram
описан далее в этой главе.
Fragment
Считывает документы, которые содержат фрагменты схемы XDR, такие как тип, созданный SQL Server.
IgnoreSchema
Игнорирует подставляемую схему, которая может быть обнаружена. Считывает данные в текущую схему
DataSet
. Если данные не соответствуют схеме
DataSet
, они отбрасываются.
InferSchema
Игнорирует любую подставляемую схему. Создает схему на основе данных в документе XML. Если она существует в
DataSet
, используется эта схема, расширяемая дополнительными столбцами и таблицами. Если столбец существует, но имеет другой тип данных, порождается исключение.
ReadSchema
Считывает подставляемую схему и загружает данные. Не будет перезаписывать схему в
DataSet
, но будет порождать исключение, если таблица в подставляемой схеме уже существует в
DataSet
Поделиться:
Популярные книги

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6

Сердце Дракона. Предпоследний том. Часть 1

Клеванский Кирилл Сергеевич
Сердце дракона
Фантастика:
фэнтези
5.00
рейтинг книги
Сердце Дракона. Предпоследний том. Часть 1

Идеальный мир для Лекаря 8

Сапфир Олег
8. Лекарь
Фантастика:
юмористическое фэнтези
аниме
7.00
рейтинг книги
Идеальный мир для Лекаря 8

Под маской, или Страшилка в академии магии

Цвик Катерина Александровна
Фантастика:
юмористическая фантастика
7.78
рейтинг книги
Под маской, или Страшилка в академии магии

Мой любимый (не) медведь

Юнина Наталья
Любовные романы:
современные любовные романы
7.90
рейтинг книги
Мой любимый (не) медведь

Академия

Кондакова Анна
2. Клан Волка
Фантастика:
боевая фантастика
5.40
рейтинг книги
Академия

Играть, чтобы жить. Книга 3. Долг

Рус Дмитрий
3. Играть, чтобы жить
Фантастика:
фэнтези
киберпанк
рпг
9.36
рейтинг книги
Играть, чтобы жить. Книга 3. Долг

Виконт. Книга 4. Колонист

Юллем Евгений
Псевдоним `Испанец`
Фантастика:
фэнтези
попаданцы
аниме
7.50
рейтинг книги
Виконт. Книга 4. Колонист

Вечный Данж. Трилогия

Матисов Павел
Фантастика:
фэнтези
юмористическая фантастика
6.77
рейтинг книги
Вечный Данж. Трилогия

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Истинная со скидкой для дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Истинная со скидкой для дракона

Волк 7: Лихие 90-е

Киров Никита
7. Волков
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Волк 7: Лихие 90-е

Кровь Василиска

Тайниковский
1. Кровь Василиска
Фантастика:
фэнтези
попаданцы
аниме
4.25
рейтинг книги
Кровь Василиска