转载把DataSet、DataTable、DataView格式转换成XML字符串、XML文件

public class DataToXml 

    { 

        /**//// <summary> 

        /// 将DataTable对象转换成XML字符串 

        /// </summary> 

        /// <param name="dt">DataTable对象</param> 

        /// <returns>XML字符串</returns> 

        public static string CDataToXml(DataTable dt) 

        { 

            if (dt != null) 

            { 

                MemoryStream ms = null; 

                XmlTextWriter XmlWt = null; 

                try 

                { 

                    ms = new MemoryStream(); 

                    //根据ms实例化XmlWt 

                    XmlWt = new XmlTextWriter(ms, Encoding.Unicode); 

                    //获取ds中的数据 

                    dt.WriteXml(XmlWt); 

                    int count = (int)ms.Length; 

                    byte[] temp = new byte[count]; 

                    ms.Seek(0, SeekOrigin.Begin); 

                    ms.Read(temp, 0, count); 

                    //返回Unicode编码的文本 

                    UnicodeEncoding ucode = new 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 ""; 

            } 

        } 

        /**//// <summary> 

        /// 将DataSet对象中指定的Table转换成XML字符串 

        /// </summary> 

        /// <param name="ds">DataSet对象</param> 

        /// <param name="tableIndex">DataSet对象中的Table索引</param> 

        /// <returns>XML字符串</returns> 

        public static string CDataToXml(DataSet ds, int tableIndex) 

        { 

            if (tableIndex != -1) 

            { 

                return CDataToXml(ds.Tables[tableIndex]); 

            } 

            else 

            { 

                return CDataToXml(ds.Tables[0]); 

            } 

        } 

        /**//// <summary> 

        /// 将DataSet对象转换成XML字符串 

        /// </summary> 

        /// <param name="ds">DataSet对象</param> 

        /// <returns>XML字符串</returns> 

        public static string CDataToXml(DataSet ds) 

        { 

            return CDataToXml(ds, -1); 

        } 

        /**//// <summary> 

        /// 将DataView对象转换成XML字符串 

        /// </summary> 

        /// <param name="dv">DataView对象</param> 

        /// <returns>XML字符串</returns> 

        public static string CDataToXml(DataView dv) 

        { 

            return CDataToXml(dv.Table); 

        } 

        /**//// <summary> 

        /// 将DataSet对象数据保存为XML文件 

        /// </summary> 

        /// <param name="dt">DataSet</param> 

        /// <param name="xmlFilePath">XML文件路径</param> 

        /// <returns>bool值</returns> 

        public static bool CDataToXmlFile(DataTable dt, string xmlFilePath) 

        { 

            if ((dt != null) && (!string.IsNullOrEmpty(xmlFilePath))) 

            { 

                string path = HttpContext.Current.Server.MapPath(xmlFilePath); 

                MemoryStream ms = null; 

                XmlTextWriter XmlWt = null; 

                try 

                { 

                    ms = new MemoryStream(); 

                    //根据ms实例化XmlWt 

                    XmlWt = new XmlTextWriter(ms, Encoding.Unicode); 

                    //获取ds中的数据 

                    dt.WriteXml(XmlWt); 

                    int count = (int)ms.Length; 

                    byte[] temp = new byte[count]; 

                    ms.Seek(0, SeekOrigin.Begin); 

                    ms.Read(temp, 0, count); 

                    //返回Unicode编码的文本 

                    UnicodeEncoding ucode = new UnicodeEncoding(); 

                    //写文件 

                    StreamWriter sw = new StreamWriter(path); 

                    sw.WriteLine("<?xml version="1.0" encoding="utf-8"?>"); 

                    sw.WriteLine(ucode.GetString(temp).Trim()); 

                    sw.Close(); 

                    return true; 

                } 

                catch (System.Exception ex) 

                { 

                    throw ex; 

                } 

                finally 

                { 

                    //释放资源 

                    if (XmlWt != null) 

                    { 

                        XmlWt.Close(); 

                        ms.Close(); 

                        ms.Dispose(); 

                    } 

                } 

            } 

            else 

            { 

                return false; 

            } 

        } 

        /**//// <summary> 

        /// 将DataSet对象中指定的Table转换成XML文件 

        /// </summary> 

        /// <param name="ds">DataSet对象</param> 

        /// <param name="tableIndex">DataSet对象中的Table索引</param> 

        /// <param name="xmlFilePath">xml文件路径</param> 

        /// <returns>bool]值</returns> 

        public static bool CDataToXmlFile(DataSet ds, int tableIndex, string xmlFilePath) 

        { 

            if (tableIndex != -1) 

            { 

                return CDataToXmlFile(ds.Tables[tableIndex], xmlFilePath); 

            } 

            else 

            { 

                return CDataToXmlFile(ds.Tables[0], xmlFilePath); 

            } 

        } 

        /**//// <summary> 

        /// 将DataSet对象转换成XML文件 

        /// </summary> 

        /// <param name="ds">DataSet对象</param> 

        /// <param name="xmlFilePath">xml文件路径</param> 

        /// <returns>bool]值</returns> 

        public static bool CDataToXmlFile(DataSet ds, string xmlFilePath) 

        { 

            return CDataToXmlFile(ds, -1, xmlFilePath); 

        } 

        /**//// <summary> 

        /// 将DataView对象转换成XML文件 

        /// </summary> 

        /// <param name="dv">DataView对象</param> 

        /// <param name="xmlFilePath">xml文件路径</param> 

        /// <returns>bool]值</returns> 

        public static bool CDataToXmlFile(DataView dv, string xmlFilePath) 

        { 

            return CDataToXmlFile(dv.Table, xmlFilePath); 

        } 

    } 

/**//// <summary> 

    /// XML形式的字符串、XML文江转换成DataSet、DataTable格式 

    /// </summary> 

    public class XmlToData 

    { 

        /**//// <summary> 

        /// 将Xml内容字符串转换成DataSet对象 

        /// </summary> 

        /// <param name="xmlStr">Xml内容字符串</param> 

        /// <returns>DataSet对象</returns> 

        public static DataSet CXmlToDataSet(string xmlStr) 

        { 

            if (!string.IsNullOrEmpty(xmlStr)) 

            { 

                StringReader StrStream = null; 

                XmlTextReader Xmlrdr = null; 

                try 

                { 

                    DataSet ds = new DataSet(); 

                    //读取字符串中的信息 

                    StrStream = new StringReader(xmlStr); 

                    //获取StrStream中的数据 

                    Xmlrdr = new XmlTextReader(StrStream); 

                    //ds获取Xmlrdr中的数据 

                    ds.ReadXml(Xmlrdr); 

                    return ds; 

                } 

                catch (Exception e) 

                { 

                    throw e; 

                } 

                finally 

                { 

                    //释放资源 

                    if (Xmlrdr != null) 

                    { 

                        Xmlrdr.Close(); 

                        StrStream.Close(); 

                        StrStream.Dispose(); 

                    } 

                } 

            } 

            else 

            { 

                return null; 

            } 

        } 

        /**//// <summary> 

        /// 将Xml字符串转换成DataTable对象 

        /// </summary> 

        /// <param name="xmlStr">Xml字符串</param> 

        /// <param name="tableIndex">Table表索引</param> 

        /// <returns>DataTable对象</returns> 

        public static DataTable CXmlToDatatTable(string xmlStr, int tableIndex) 

        { 

            return CXmlToDataSet(xmlStr).Tables[tableIndex]; 

        } 

        /**//// <summary> 

        /// 将Xml字符串转换成DataTable对象 

        /// </summary> 

        /// <param name="xmlStr">Xml字符串</param> 

        /// <returns>DataTable对象</returns> 

        public static DataTable CXmlToDatatTable(string xmlStr) 

        { 

            return CXmlToDataSet(xmlStr).Tables[0]; 

        } 

        /**//// <summary> 

        /// 读取Xml文件信息,并转换成DataSet对象 

        /// </summary> 

        /// <remarks> 

        /// DataSet ds = new DataSet(); 

        /// ds = CXmlFileToDataSet("/XML/upload.xml"); 

        /// </remarks> 

        /// <param name="xmlFilePath">Xml文件地址</param> 

        /// <returns>DataSet对象</returns> 

        public static DataSet CXmlFileToDataSet(string xmlFilePath) 

        { 

            if (!string.IsNullOrEmpty(xmlFilePath)) 

            { 

                string path = HttpContext.Current.Server.MapPath(xmlFilePath); 

                StringReader StrStream = null; 

                XmlTextReader Xmlrdr = null; 

                try 

                { 

                    XmlDocument xmldoc = new XmlDocument(); 

                    //根据地址加载Xml文件 

                    xmldoc.Load(path); 

                    DataSet ds = new DataSet(); 

                    //读取文件中的字符流 

                    StrStream = new StringReader(xmldoc.InnerXml); 

                    //获取StrStream中的数据 

                    Xmlrdr = new XmlTextReader(StrStream); 

                    //ds获取Xmlrdr中的数据 

                    ds.ReadXml(Xmlrdr); 

                    return ds; 

                } 

                catch (Exception e) 

                { 

                    throw e; 

                } 

                finally 

                { 

                    //释放资源 

                    if (Xmlrdr != null) 

                    { 

                        Xmlrdr.Close(); 

                        StrStream.Close(); 

                        StrStream.Dispose(); 

                    } 

                } 

            } 

            else 

            { 

                return null; 

            } 

        } 

        /**//// <summary> 

        /// 读取Xml文件信息,并转换成DataTable对象 

        /// </summary> 

        /// <param name="xmlFilePath">xml文江路径</param> 

        /// <param name="tableIndex">Table索引</param> 

        /// <returns>DataTable对象</returns> 

        public static DataTable CXmlToDataTable(string xmlFilePath, int tableIndex) 

        { 

            return CXmlFileToDataSet(xmlFilePath).Tables[tableIndex]; 

        } 

        /**//// <summary> 

        /// 读取Xml文件信息,并转换成DataTable对象 

        /// </summary> 

        /// <param name="xmlFilePath">xml文江路径</param> 

        /// <returns>DataTable对象</returns> 

        public static DataTable CXmlToDataTable(string xmlFilePath) 

        { 

            return CXmlFileToDataSet(xmlFilePath).Tables[0]; 

        } 

    } 

using System; 

using System.Data; 

using System.IO; 

using System.Xml; 

using System.Text; 

// 相应C#代码: 

private string ConvertDataTableToXML(DataTable xmlDS) 

{ 

     MemoryStream stream = null; 

     XmlTextWriter writer = null; 

     try 

     { 

         stream = new MemoryStream(); 

         writer = new XmlTextWriter(stream, Encoding.Default); 

         xmlDS.WriteXml(writer); 

         int count = (int)stream.Length; 

         byte[] arr = new byte[count]; 

         stream.Seek(0, SeekOrigin.Begin); 

         stream.Read(arr, 0, count); 

         UTF8Encoding utf = new UTF8Encoding(); 

         return utf.GetString(arr).Trim(); 

     } 

     catch 

     { 

         return String.Empty; 

     } 

     finally 

     { 

         if (writer != null) writer.Close(); 

     } 

} 

private DataSet ConvertXMLToDataSet(string xmlData) 

{ 

   StringReader stream = null; 

   XmlTextReader reader = null; 

   try 

   { 

     DataSet xmlDS = new DataSet(); 

     stream = new StringReader(xmlData); 

     reader = new XmlTextReader(stream); 

     xmlDS.ReadXml(reader); 

     return xmlDS; 

   } 

   catch (Exception ex) 

   { 

     string strTest = ex.Message; 

     return null; 

   } 

   finally 

   { 

     if (reader != null) 

     reader.Close(); 

   } 

} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值