• XML与DataSet的相互转换类


    XmlDatasetConvert 该类提供了四种方法:
    1、将xml对象内容字符串转换为DataSet
    2、将xml文件转换为DataSet
    3、将DataSet转换为xml对象字符串
    4、将DataSet转换为xml文件
    
    XmlDatasetConvert.cs
    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#region 转换一个XML文件(本地\网络均可)为一个DataSet
                //http://news.baidu.com/n?cmd=1&class=sportnews&tn=rss
                //F:\study\001CSharp_Study\002Source\XmlDesign\XmlDesign\Save_Plan.xml
                ds = XmlDatasetConvert.ConvertXMLFileToDataSet(@"http://www.bjcan.com/hengxing/"http://news.baidu.com/n?cmd=1&class=sportnews&tn=rss%22");
                Console.WriteLine("数据集名为\"{0}\",包含{1}个表", ds.DataSetName, ds.Tables.Count);
                foreach(DataTable dt in ds.Tables)
                {
                    PrintTableName(dt.TableName);
                };
                #endregion
    
                构造一个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#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);
            }
        }
    }
    

      

  • 相关阅读:
    awk语法
    Linux 统计某个字符串出现的次数
    Linux 输出文件列数,拼接文件
    Linux之date
    C变量类型和作用域
    Java垃圾回收机制
    python 字符编码问题
    Linux文件和windows文件在 换行符的区别
    不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁
    Iterator和ListIterator
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2300259.html
Copyright © 2020-2023  润新知