DataSet與Xml之間的轉換

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)             {                 //第一種使用stream                 case 1:                     //創建文件流,將DataSet中的數據寫入文件流中                     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;                 //第二種使用FileName                 case 2:                     //寫出                     dsWrite.WriteXml(@System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "Test.txt");                     //讀入                     dsRead.ReadXml(@System.AppDomain.CurrentDomain.BaseDirectory.ToString() + "Test.txt");                     break;                //第三種使用XmlTextWriter                 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;                 //第四種使用TextReader、TextWriter                 case 4:                     //DataSet轉化爲xml                     StringBuilder s = new StringBuilder();                     TextWriter tw = new StringWriter(s);                     dsWrite.WriteXml(tw, XmlWriteMode.WriteSchema);                     string xml = s.ToString();                     //xml轉化爲DataSet                     TextReader tr = new StringReader(xml);                     dsRead.ReadXml(tr,XmlReadMode.ReadSchema);                     break;                 default:                     break;               }         }     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章