XML文件与DataTable、Dataset互转
XML文件与DataTable、Dataset互转
一、DataTable转XML
#region DataTableToXml /// <summary> /// 将DataTable对象转换成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(); //根据ms实例化XmlWt XmlWt = new XmlTextWriter(ms, System.Text.Encoding.Unicode); //获取ds中的数据 dt.TableName = string.IsNullOrEmpty(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转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); //某个节点名称的所有节点内容 DataTable dtOneNote = dsXML.Tables["SMT"]; return dsXML; }
三、Dataset转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转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(); } }
本文来自博客园,作者:码农阿亮,转载请注明原文链接:https://www.cnblogs.com/wml-it/p/15155173.html
技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
开源库地址,欢迎点亮:
GitHub:https://github.com/ITMingliang
Gitee: https://gitee.com/mingliang_it
GitLab: https://gitlab.com/ITMingliang
建群声明: 本着技术在于分享,方便大家交流学习的初心,特此建立【编程内功修炼交流群】,为大家答疑解惑。热烈欢迎各位爱交流学习的程序员进群,也希望进群的大佬能不吝分享自己遇到的技术问题和学习心得!进群方式:扫码关注公众号,后台回复【进群】。
![](https://images.cnblogs.com/cnblogs_com/wml-it/2196906/o_230823011905_wxgzhss.png)