C#實(shí)現(xiàn)XML文件與DataTable、Dataset互轉(zhuǎn)
一、DataTable轉(zhuǎn)XML
#region DataTableToXml /// <summary> /// 將DataTable對象轉(zhuǎn)換成XML字符串 /// </summary> /// <param name="ds">DataSet對象</param> /// <returns>XML字符串</returns> public static string DataTableToXml(DataTable dt,string sName) { if (dt != null) { MemoryStream ms = null; XmlTextWriter XmlWt = null; try { ms = new MemoryStream(); //根據(jù)ms實(shí)例化XmlWt XmlWt = new XmlTextWriter(ms, System.Text.Encoding.Unicode); //獲取ds中的數(shù)據(jù) dt.TableName = Sql.IsEmptyString(sName) ? "dt2xml" : sName; dt.WriteXml(XmlWt, XmlWriteMode.WriteSchema); int count = (int)ms.Length; byte[] temp = new byte[count]; ms.Seek(0, SeekOrigin.Begin); ms.Read(temp, 0, count); //返回Unicode編碼的文本 System.Text.UnicodeEncoding ucode = new System.Text.UnicodeEncoding(); string returnValue = ucode.GetString(temp).Trim(); return returnValue; } catch (System.Exception ex) { throw ex; } finally { //釋放資源 if (XmlWt != null) { XmlWt.Close(); ms.Close(); ms.Dispose(); } } } else { return ""; } } #endregion
二、XML轉(zhuǎn)Dataset
方法A:
#region Xml To DataSet public static DataSet XmlToDataSet(string xmlString) { XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(xmlString); StringReader stream = null; XmlTextReader reader = null; try { DataSet xmlDS = new DataSet(); stream = new StringReader(xmldoc.InnerXml); reader = new XmlTextReader(stream); xmlDS.ReadXml(reader); reader.Close(); return xmlDS; } catch (System.Exception ex) { reader.Close(); throw ex; } } #endregion
方法B:
private static DataSet XMLToDataset() { string strDBXMLFile = @"F:\TestDir\XML\DBTEST.XML"; DataSet dsXML = new DataSet(); dsXML.ReadXml(strDBXMLFile); //某個(gè)節(jié)點(diǎn)名稱的所有節(jié)點(diǎn)內(nèi)容 DataTable dtOneNote = dsXML.Tables["SMT"]; return dsXML; }
三、Dataset轉(zhuǎn)XML
public static string ConvertDataSetToXML(DataSet xmlDS) { MemoryStream stream = null; XmlTextWriter writer = null; try { stream = new MemoryStream(); //從stream裝載到XmlTextReader writer = new XmlTextWriter(stream, Encoding.Unicode); //用WriteXml方法寫入文件. xmlDS.WriteXml(writer); int count = (int)stream.Length; byte[] arr = new byte[count]; stream.Seek(0, SeekOrigin.Begin); stream.Read(arr, 0, count); UnicodeEncoding utf = new UnicodeEncoding(); return utf.GetString(arr).Trim(); } catch (System.Exception ex) { throw ex; } finally { if (writer != null) writer.Close(); } }
四、Dataset轉(zhuǎn)XML文件
public static void ConvertDataSetToXMLFile(DataSet xmlDS, string xmlFile) { MemoryStream stream = null; XmlTextWriter writer = null; try { stream = new MemoryStream(); //從stream裝載到XmlTextReader writer = new XmlTextWriter(stream, Encoding.Unicode); //用WriteXml方法寫入文件. xmlDS.WriteXml(writer); int count = (int)stream.Length; byte[] arr = new byte[count]; stream.Seek(0, SeekOrigin.Begin); stream.Read(arr, 0, count); //返回Unicode編碼的文本 UnicodeEncoding utf = new UnicodeEncoding(); StreamWriter sw = new StreamWriter(xmlFile); sw.WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sw.WriteLine(utf.GetString(arr).Trim()); sw.Close(); } catch (System.Exception ex) { throw ex; } finally { if (writer != null) writer.Close(); } }
到此這篇關(guān)于C#實(shí)現(xiàn)XML文件與DataTable、Dataset互轉(zhuǎn)的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- c#使用Dataset讀取XML文件動(dòng)態(tài)生成菜單的方法
- C#通過DataSet讀寫xml文件的方法
- C#從文件流讀取xml文件到DataSet并顯示的方法
- C#從數(shù)據(jù)庫讀取數(shù)據(jù)到DataSet并保存到xml文件的方法
- C# XML操作 代碼大全(讀XML,寫XML,更新,刪除節(jié)點(diǎn),與dataset結(jié)合等)
- C# DataSet的內(nèi)容寫成XML時(shí)如何格式化字段數(shù)據(jù)
- asp.net下用DataSet生成XML的問題
- C#保存與讀取DataTable信息到XML格式的方法
- .NET實(shí)現(xiàn)XML與DataTable互轉(zhuǎn)的實(shí)例代碼
相關(guān)文章
c# 成員類型訪問權(quán)限低于字段本身的實(shí)現(xiàn)
本文主要介紹了c# 成員類型訪問權(quán)限低于字段本身的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
這篇文章主要介紹了C#實(shí)現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法,涉及C#針對注冊表的讀取與監(jiān)控技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-08-08C#類繼承中構(gòu)造函數(shù)的執(zhí)行序列示例詳解
這篇文章主要給大家介紹了關(guān)于C#類繼承中構(gòu)造函數(shù)的執(zhí)行序列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09C#單向鏈表實(shí)現(xiàn)非升序插入方法的實(shí)例詳解
單向鏈表是一種數(shù)據(jù)結(jié)構(gòu),其中元素以線性方式連接在一起,每個(gè)元素都指向下一個(gè)元素,非升序插入意味著元素不是按升序(從小到大)插入鏈表中,本文給大家介紹了C#單向鏈表實(shí)現(xiàn)非升序插入方法的實(shí)例,需要的朋友可以參考下2024-03-03c# 免費(fèi)組件html轉(zhuǎn)pdf的實(shí)現(xiàn)過程
這篇文章主要介紹了c# 免費(fèi)組件html轉(zhuǎn)pdf的實(shí)現(xiàn)過程,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06C#畢業(yè)設(shè)計(jì)之Winform零壓健身房管理系統(tǒng)
本文介紹了個(gè)人的《零壓健身房管理系統(tǒng)(扁平化)》的基本流程和功能點(diǎn)的介紹,虛心接受各位的意見,歡迎在提出寶貴的意見,大家一起探討學(xué)習(xí)2021-09-09