zoukankan      html  css  js  c++  java
  • 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 = 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转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:TestDirXMLDBTEST.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();
                    }
                }

     


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    隐语义模型LFM
    基于内容的推荐、协同过滤
    评定标准
    函数式模型示例
    函数式模型概述
    序贯模型
    seq2seq
    链队列
    顺序栈
    线性表的静态链表存储结构
  • 原文地址:https://www.cnblogs.com/wml-it/p/15155173.html
Copyright © 2011-2022 走看看