21.8.2 写入XML输出结果
如上所述,DataSet支持在XML中定义其模式。可以从XML文档中读取数据,也可以把数据写入XML文档。
DataSet.WriteXml方法可以输出存储在DataSet中的各种数据,可以选择只输出数据,也可以输出数据和模式。下面是为上述Region示例编写的代码:
ds.WriteXml(".\\WithoutSchema.xml");
ds.WriteXml(".\\WithSchema.xml" , XmlWriteMode.WriteSchema);
第一个文件WithoutSchema.xml如下所示:
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Region>
<RegionID>1</RegionID>
<RegionDescription>Eastern </RegionDescription>
</Region>
<Region>
<RegionID>2</RegionID>
<RegionDescription>Western </RegionDescription>
</Region>
<Region>
<RegionID>3</RegionID>
<RegionDescription>Northern </RegionDescription>
</Region>
<Region>
<RegionID>4</RegionID>
<RegionDescription>Southern </RegionDescription>
</Region>
</NewDataSet>
RegionDescription上的闭合标记在页面的右边,因为数据库列定义为NCHAR(50),这是一个包含50个字符的字符串,其中用空格填充。
WithSchema.xml文件生成的结果包含DataSet的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 FTEL="NewDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element FTEL="Region">
<xs:complexType>
<xs:sequence>
<xs:element FTEL="RegionID"
msdata:AutoIncrement="true"
msdata:AutoIncrementSeed="1"
type="xs:int" />
<xs:element FTEL="RegionDescription"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Region>
<RegionID>1</RegionID>
<RegionDescription>Eastern </RegionDescription>
</Region>
<Region>
<RegionID>2</RegionID>
<RegionDescription>Western </RegionDescription>
</Region>
<Region>
<RegionID>3</RegionID>
<RegionDescription>Northern </RegionDescription>
</Region>
<Region>
<RegionID>4</RegionID>
<RegionDescription>Southern </RegionDescription>
</Region>
</NewDataSet>
注意,使用msdata模式中的文件,定义DataSet中列的附加属性,例如AutoIncrement 和 AutoIncrementSeed,这些属性直接对应于DataColumn上的可定义属性。





