DataSet与Xml之间的转换

DataSet转化为Xml,Xml转化为DataSet,Ado.net中使用方法DataSet.WriteXml()和DataSet.ReadXml(),由于有多个重载方法,所以这里有多条路径可以实现,可谓条条大道通罗马。这里我就把所有的用法来尝试下,希望给大家有个借鉴作用。     

因为DataSet.ReadXml()和DataSet.WriteXml()共8种重载方法,前四种是不带架构的,后四种带架构。这里举出带架构的4种方法。      

/// <summary>         /// DataSet和Xml之间的转换         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void DsAndXml_Click(object sender, EventArgs e)        

{             //自定义一个DataSet,里面有一列a,一行值为"hello world!",Xml数据从这个数据集中来读取            

DataSet dsWrite = new DataSet();            

DataTable dt = new DataTable();            

 dt.Columns.Add("a", typeof(string));            

DataRow dr = dt.NewRow();            

dr[0] = "hello world!";            

 dt.Rows.Add(dr);            

dsWrite.Tables.Add(dt);            

//自定义一个DataSet用来从xml中读取数据            

DataSet dsRead = new DataSet();            

 int k = Convert.ToInt32(this.textBox1.Text.ToString());       

  switch(k)            

 {           case 1:

 Stream stream = new FileStream(@System.AppDomain.CurrentDomain.BaseDirectory.ToString()+"Test.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);                    

//dsWrite.WriteXml(stream);                 

 dsWrite.WriteXml(stream, XmlWriteMode.WriteSchema);                 

 stream.Close();                     

 dsRead.ReadXml(@System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "Test.txt");                    

break; 

case 2:

dsWrite.WriteXml(@System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "Test.txt");                       

dsRead.ReadXml(@System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "Test.txt");                    

break; 

case 3: 

StringBuilder s1 = new StringBuilder();                    

TextWriter tw1 = new StringWriter(s1);                    

 System.Xml.XmlTextWriter xtw1= new System.Xml.XmlTextWriter(tw1);                    

dsWrite.WriteXml(xtw1,XmlWriteMode.WriteSchema);                    

string xml1 = s1.ToString();                     //读入                    

TextReader tr1 = new StringReader(xml1);                    

dsRead.ReadXml(tr1,XmlReadMode.ReadSchema);                    

 //System.Xml.XmlReader xr = System.Xml.XmlReader.Create(tr1);                    

//dsRead.ReadXml(xr);                                       

break;                

case 4:

StringBuilder s = new StringBuilder();                    

 TextWriter tw = new StringWriter(s);                    

dsWrite.WriteXml(tw, XmlWriteMode.WriteSchema);                    

string xml = s.ToString();                   

TextReader tr = new StringReader(xml);                    

dsRead.ReadXml(tr,XmlReadMode.ReadSchema);                    

 break;                

 default:                    

break;              

}        

}     


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/feijian14/archive/2008/06/28/2593930.aspx

原文地址:https://www.cnblogs.com/uwking/p/2014584.html