Те же четыре источника данных (файл, объекты Stream, TextReader и XmlReader) могут использоваться вместе с методом ReadXmlSchema. Объект DataSet имеет аналогичный набор методов для записи XML-данных.
После загрузки в объект DataSet (независимо от способа и места загрузки) данные и/или схемы данных можно записать в XML-формате (с XML-схемой или без нее). Для демонстрации способов записи данных в XML-формате выполните перечисленные ниже действия.
1. Создайте в форме новую кнопку сразу под кнопкой Read XML, перетаскивая ее из панели инструментов.
2. В окне свойств Properties укажите значение btnWriteXML для свойства (Name) и значение Write XML для свойства Text этой кнопки.
3. Затем в определении класса формы frmXML введите код из листинга 10.3.
Листинг 10.3. Код сохранения содержимого объекта DataSet в виде XML-файла
Private Sub btnWriteXML_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnWriteXML.Click
Dim dsSales As New DataSet()
Dim en As New SqlConnection _
("data source=localhost;initial catalog=pubs;user id=sa")
Dim daAuthors As New SqlDataAdapter("select * from sales", en)
Dim daPublishers As New SqlDataAdapter("select * from stores", en)
' Загрузка реляционных данных из базы данных.
daAuthors.Fill(dsSales, "Sales")
daPublishers.Fill(dsSales, "Stores")
' Запись XML-данных в файл
dsSales.WriteXml("…\StoreSales.xml")
' Запись схемы в XSD-файл.
dsSales.WriteXmlSchema("…\StoreSales.xsd")
End Sub
В этой подпрограмме создаются два объекта — адаптера данных (daAuthors и daPublishers), которые затем используются для вставки данных в объект dsPubs из двух таблиц базы данных pubs СУБД SQL Server. В листинге 10.4 приведено содержимое файла StoreSales.xml, который создается в результате выполнения этой подпрограммы. Обратите внимание на то, что данный XML-документ содержит записи о продажах, а затем записи о магазинах. Этот подход имеет смысл, так как между ними не задано никакого отношения. Если бы таблицы Sales и Stores были связаны, то эти записи можно было вложить друг в друга. Пример такого вложения приводится далее, в бизнес-ситуации 10.1.
ЛИСТИНГ 10.4. Содержимое файла StoreSales.xml
6380
6871
l994-09-14T00:00:00.0000000+02:00
5
Net 60
BU1032
6380
722a
l994-09-13T00:00:00.0000000+02:00
3
Net 60
PS2091
7066
A2976
1993-05-24T00:00:00.0000000+02:00
50
Net 30
PC8888
7066
QA7442.3
1994-09-13T00:00:00.0000000+02:00
75
ON invoice
PS209K/title_id>
7067
D4482
1994-09-14T00:00:00.0000000+02:00
10
Net 60
PS2091
7067
P2121
1992-06-15T00:00:00.0000000+02:00
40
Net 30
TC3218
7067
<���оrd_num>P2121
1992-06-15T00:00:00.0000000+02:00
20
Net 30
TC4203
7067
P2121
1992-06-15T00:00:00.0000000+02:00
20
Net 30
TC7777
7131
N914008
1994-09-14T00:00:00.0000000+02:00
20
Net 30
PS2091
7131
<���оrd_num>N914014</оrd_num>
1994-09-14T00:00:00.0000000+02:00
25
Net 30
MC3021
7131
P3087a
1993-05-29T00:00:00.0000000+02:00
20
Net 60
PS1372
7131
P3087a
1993-05-29T00:00:00.0000000+02:00
25
Net 60
PS2106
7131
P3087a
1993-05-29T00:00:00.0000000+02:00
15
Net 60
PS3333
7131
P3087a
1993-05-29T00:00:00.0000000+02:00
25
Net 60
PS7777
7896
QQ2299
1993-10-28T00:00:00.0000000+02:00
15
Net 60
BU7832
7896
TQ456
1993-12-12T00:00:00.0000000+02:00
10
Net 60
MC2222
7896
X999
1993-02-21T00:00:00.0000000+02:00
35
ON invoice
BU2075
8042
423LL922
1994-09-14T00:00:00.0000000+02:00
15
ON invoice
MC3021
8042
423LL930
1994-09-14T00:00:00.0000000+02:00
10
ON invoice
BU1032
8042
P723
1993-03-11T00:00:00.0000000+02:00
25
Net 30
BU1111
8042
QA879.1
1993-05-22T00:00:00.0000000+02:00
30
Net 30
PC1035
6380
Eric the Read Books
788 Catamaugus Ave.
Seattle
WA
98056
7066
Barnum's
567 Pasadena Ave.
CA
92789
7067
News & Brews
577 First St.
Los Gatos
CA
96745
7131
Doc-U-Mat: Quality Laundry and Books
Читать дальше