Arial Century Courier Georgia Tahoma Verdana Times New Roman
-
+
4. Увеличьте размер формы Form1.
5. В окне свойств Properties укажите значение frmPrepareXML для свойства (Name) и значение Prepare XML для свойства Text формы Form1.
6. В верхнем левом углу формы создайте кнопку, перетаскивая ее из панели элементов управления.
7. В окне свойств Properties укажите значение btnInventory для свойства (Name) и значение Create Inventory XML для свойства Text этой кнопки.
В верхней части файла введите следующий код:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Затем
в определении класса формы frmPrepareXML введите приведенный ниже код.
Dim en As New SqlConnection _
("data source=localhost;initial catalog=Novelty;user id=sa")
Private Sub btnInventory_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnlnventory.Click
Dim dsInventory As New DataSet
Dim daInventory As New SqlDataAdapter _
("select * from tblInventory ", en)
daInventory.Fill(dsInventory, "tblInventory")
' Сохранение поля ID как XML-атрибута, а не элемента
dsInventory.Tables("tblInventory").Columns("ID").ColumnMapping = _
MappingType.Attribute
' Сокрытие поля WholesalePrice в сохраненном XML-файле
dslnventory.Tables("tbllnventory").Columns _
("WholesalePrice").ColumnMapping = MappingType.Hidden
' Сохранение данных в XML-файле, включая встроенную схему.
dsInventory.WriteXml("..\Inventory.xml", XmlWriteMode.WriteSchema)
End Sub
После вставки данных в объект DataSet для формирования XML-файла используются следующие два выражение. Первое выражение указывает на то, что поле ID следует сохранить как XML-атрибут:
dsInventory.Tables("tblInventory").Columns("ID").ColumnMapping = _
MappingType.Attribute
Второе выражение указывает на сокрытие поля WholesalePrice в сохраненном XML-файле:
dslnventory.Tables("tbllnventory").Columns _
("WholesalePrice").ColumnMapping = MappingType.Hidden
Наконец, во время сохранения данных используется второй параметр метода WriteXML, который указывает на необходимость включения XSD-схемы вместе с данными. Полученный в результате XML-файл показан в листинге 10.8.
Листинг 10.8. Пример сохранения таблицы tblInventory в виде XML-файла
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="tblInventory">
<xs:complexType>
<xs:sequence>
<xs:element name="ProductName" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
<xs:element name="RetailPrice" type="xs:decimal" minOccurs="0" msdata:Ordinal="3" />
<xs:element name="Description" type="xs:string" minOccurs="0" msdata:Ordinal="4" />
</xs:sequence>
<xs:attribute name="ID" type="xs:int" />
<xs:attribute name="WholesalePrice" type="xs:decimal" use="prohibited" />
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<tblInventory ID="1">
<ProductName>Rubber Chicken</ProductName>
<RetailPrice>2.99</RetailPrice>
<Description>The quintessential rubber chicken.</Description>
</tblInventory>
<tblInventory ID="2">
<ProductName>Joy Buzzer</ProductName>
<RetailPrice>9.99</RetailPrice>
<Description>They will get a real shock out of this.</Description>
</tblInventory>
<tblInventory ID="3">
<ProductName>Seltzer Bottle</ProductName>
<RetailPrice>15.24</RetailPrice>
<Description>Seltzer sold separately.</Description>
</tblInventory>
<tblInventory ID="4">
<ProductName>Ant Farm</ProductName>
<RetailPrice>14.99</RetailPrice>
<Description>Watch ants where they live and breed.</Description>