XML与DataSet的相互转换

转:https://www.cnblogs.com/kunEssay/p/6168824.html

 XML与DataSet的相互转换的类

一、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();  }  }   } } 

二、 该方法的使用示例

 
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 构造一个DataSet,并转换为XML字符串

            构造一个DataSet,并转换为XML字符串 转换一个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文件   #region 转换一个Dataset为一个XML文件  XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, "c:\\\\adadsda1。xml");  #endregion   Console.ReadLine();  }   private static void PrintTableName(string tableName)  {  Console.WriteLine(tableName);  }  } }

一、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();  }  }   } } 

二、 该方法的使用示例

 
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 构造一个DataSet,并转换为XML字符串

            构造一个DataSet,并转换为XML字符串 转换一个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文件   #region 转换一个Dataset为一个XML文件  XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, "c:\\\\adadsda1。xml");  #endregion   Console.ReadLine();  }   private static void PrintTableName(string tableName)  {  Console.WriteLine(tableName);  }  } }

猜你喜欢

转载自www.cnblogs.com/janghe/p/9758559.html