在.NET Framework 中,经常使用XML 作为存储和传输各种数据的格式。DataSet 中的数据可以转换成XML 的形式来表示和存储。我们可以使用XML 对象同步和转换DataSet 的数据,而DataSet 也可以存储和传输XML 格式的数据。
XML 与 DataSet 的关系如下图所示:
DataSet 对象的常用方法如下:
A. 使用ReadXml( ) 方法:从文件或流中加载XML 数据,填充DataSet 对象。DataSet 对象.ReadXML( 文件路径字符串|stream 对象, XmlReadMode 枚举值[可以省略] ) ;
B. 使用WriteXml( ) 方法:将DataSet 对象中的数据以XML 格式写出到文件或流中。DataSet 对象.WriteXml( 文件路径字符串| stream 对象, XmlWriteMode 枚举值[可以省略] ) ;
C. 使用ReadXmlSchema( ) 方法:将Shema 模式文件读入DataSet 对象。DataSet 对象.ReadXmlSchema( Stream | FileName | TextReader | XmlReader ) ;
D. 使用WriteXmlSchema( ) 方法:将DataSet 对象的Shema 模式文件写出到文件或流。DataSet 对象.WriteXmlSchema( Stream | FileName | TextWriter | XmlWriter ) ;
E. 使用GetXmlSchema( ) 方法:将DataSet 对象的Shema 模式,以字符串的形式获得。DataSet 对象.GetXmlSchema( );
F. 使用GetXml( ) 方法:将DataSet 对象的XML 格式的数据集,以字符串的形式获得。DataSet 对象.GetXml( );
接下来,通过一个综合示例进行演示。Person.xml 文件如下:
<?xml version="1.0" encoding="UTF-8"?>0Mark181Jorn222Aderson30
Customer.xsd 文件如下:
Winform 程序的源代码如下:
namespaceDataSet_XML_Demo
{publicpartialclassForm1 : Form
{publicForm1()
{
InitializeComponent();
}
DataSet ds=newDataSet();//读取XML文档的数据到DataSetprivatevoidbtnReadXML_Click(objectsender, EventArgs e)
{
ds.ReadXml("http://www.cnblogs.com/"+"Person.xml");
dataGridView1.DataSource=ds.Tables[0];
}//将DataSet中的数据写出到XML文档privatevoidbtnWriteXML_Click(objectsender, EventArgs e)
{
ds.WriteXml("http://www.cnblogs.com/New.xml");
ds.WriteXml("http://www.cnblogs.com/New_Alter.xml", XmlWriteMode.DiffGram);
}//加载Schema给DataSetprivatevoidbtnReadXmlSchema_Click(objectsender, EventArgs e)
{
DataSet newDataSet=newDataSet();
newDataSet.ReadXmlSchema("http://www.cnblogs.com/Customer.xsd");
dataGridView1.DataSource=newDataSet.Tables[0];
}//将DataSet的Schema写出privatevoidbtnWriteXmlSchema_Click(objectsender, EventArgs e)
{
DataSet newDataSet=newDataSet();
DataTable dt=newDataTable();
DataColumn dc1=newDataColumn("id",typeof(int));
DataColumn dc2=newDataColumn("name",typeof(string));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
newDataSet.Tables.Add(dt);
dataGridView1.DataSource=newDataSet;
dataGridView1.DataMember="Table1";
newDataSet.WriteXmlSchema("http://www.cnblogs.com/newSchema.xsd");
}//GetXml()方法的使用privatevoidbtnGetXml_Click(objectsender, EventArgs e)
{
DataSet newXml=newDataSet();
newXml.ReadXml("http://www.cnblogs.com/"+"Person.xml");
dataGridView1.DataSource=newXml.Tables[0];//GetXml():返回DataSet中XML形式的字符串stringstrXml=newXml.GetXml();
textBox1.Text=strXml;
}//GetXmlSchema()方法的使用privatevoidbtnGetXmlSchema_Click(objectsender, EventArgs e)
{/*注意:
如果DataSet已经拥有一个Schema模式,
再加载新的Schema模式文件,
则会自动将两个Schema模式合并。*/DataSet newSchema=newDataSet();
newSchema.ReadXmlSchema("http://www.cnblogs.com/Customer.xsd");
dataGridView1.DataSource=newSchema.Tables[0];//GetXmlSchema():返回DataSet所使用的Schema 模式文件的字符串stringstrSchema=newSchema.GetXmlSchema();
textBox1.Text=strSchema;
}
}
}
Winform 程序的界面效果如下: