XML与DataSet的相互转换

来源:互联网 发布:淘宝全网举报假货最快 编辑:程序博客网 时间:2024/06/05 20:19


一、XML 与 DataSet 的关系如下图所示:

 

 

二、DataSet 对象的常用方法如下:

 

A. 使用ReadXml( ) 方法:

从文件或流中加载XML 数据,填充DataSet 对象。DataSet 对象.ReadXML( 文件路径字符串|stream 对象, XmlReadMode 枚举值[可以省略] ) ;

B. 使用WriteXml( ) 方法:

将DataSet 对象中的数据以XML 格式写出到文件或流中。DataSet 对象.WriteXml( 文件路径字符串| stream 对象, XmlWriteMode 枚举值[可以省略] ) ;

C. 使用ReadXmlSchema( ) 方法:

将Shema 模式文件读入DataSet 对象。DataSet 对象.ReadXmlSchema( Stream | FileName | TextReader | XmlReader ) ;

D. 使用WriteXmlSchema( ) 方法:

将DataSet 对象的Shema 模式文件写出到文件或流。DataSet 对象.WriteXmlSchema( Stream | FileName | TextWriter | XmlWriter ) ;

E. 使用GetXmlSchema( ) 方法:

将DataSet 对象的Shema 模式,以字符串的形式获得。DataSet 对象.GetXmlSchema( );

F. 使用GetXml( ) 方法:

将DataSet 对象的XML 格式的数据集,以字符串的形式获得。DataSet 对象.GetXml( );

 

三、XML与DataSet的相互转换的类



using System;using System.Collections.Generic;using System.Text;using System.Data;using System.IO;using System.Xml;namespace XmlDesign{    class XmlDatasetConvert    {        //将xml对象内容字符串转换为DataSet        public static DataSet ConvertXMLToDataSet(string xmlData)        {            StringReader stream = null;            XmlTextReader reader = null;            try            {                DataSet xmlDS = new DataSet();                stream = new StringReader(xmlData);                //从stream装载到XmlTextReader                reader = new XmlTextReader(stream);                xmlDS.ReadXml(reader);                return xmlDS;            }            catch (System.Exception ex)            {                throw ex;            }            finally            {                if (reader != null) reader.Close();            }        }        //将xml文件转换为DataSet        public static DataSet ConvertXMLFileToDataSet(string xmlFile)        {            StringReader stream = null;            XmlTextReader reader = null;            try            {                XmlDocument xmld = new XmlDocument();                xmld.Load(xmlFile);                DataSet xmlDS = new DataSet();                stream = new StringReader(xmld.InnerXml);                //从stream装载到XmlTextReader                reader = new XmlTextReader(stream);                xmlDS.ReadXml(reader);                //xmlDS.ReadXml(xmlFile);                return xmlDS;            }            catch (System.Exception ex)            {                throw ex;            }            finally            {                if (reader != null) reader.Close();            }        }        //将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();            }        }    }}

</pre><p></p><p><pre name="code" class="csharp">using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Data;namespace XmlDesign{    class Program    {        static void Main(string[] args)        {            DataSet ds = new DataSet();            转换一个XML文件(本地\\网络均可)为一个DataSet#region 转换一个XML文件(本地\\网络均可)为一个DataSet            ds = XmlDatasetConvert.ConvertXMLFileToDataSet(                 @"news。baidu。com/n?cmd=1&class=sportnews&tn=rss");            Console.WriteLine("数据集名为\\"{0}\\",包含{1}个表",             ds.DataSetName, ds.Tables.Count);            foreach(DataTable dt in ds.Tables)            {                PrintTableName(dt.TableName);            };            #endregion 构造一个DataSet,并转换为XML字符串            构造一个DataSet,并转换为XML字符串#region 构造一个DataSet,并转换为XML字符串             DataSet ds1 = new DataSet();            DataTable dt1 = new DataTable();            dt1.TableName = "test";            dt1.Columns.Add("id");            dt1.Columns.Add("name");            dt1.Rows.Add("i001", "hekui");            dt1.Rows.Add("i002", "liyang");            DataTable dt2 = new DataTable();            dt2.TableName = "test1";            dt2.Columns.Add("bookid");            dt2.Columns.Add("bookname");            dt2.Rows.Add("b001", "书本1");            dt2.Rows.Add("b002", "书本2");            ds1.Tables.Add(dt1);            ds1.Tables.Add(dt2);            ds1.DataSetName = "方案";            string xmlOut = XmlDatasetConvert.ConvertDataSetToXML(ds1);            #endregion 转换一个XML字符串为一个DataSet            转换一个XML字符串为一个DataSet#region 转换一个XML字符串为一个DataSet            DataSet ds2 = new DataSet();            ds2 = XmlDatasetConvert.ConvertXMLToDataSet(xmlOut);            Console.WriteLine("数据集名为\\"{0}\\",包含{1}个表",                ds2.DataSetName, ds2.Tables.Count);            foreach (DataTable dt in ds2.Tables)            {                PrintTableName(dt.TableName);            };            #endregion 转换一个Dataset为一个XML文件            转换一个Dataset为一个XML文件#region 转换一个Dataset为一个XML文件            XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, "c:\\\\adadsda1。xml");            #endregion                        Console.ReadLine();        }        private static void PrintTableName(string tableName)        {            Console.WriteLine(tableName);        }    }}



0 0
原创粉丝点击