• 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);
            }
        }
    }
  • 相关阅读:
    papamelon 212. 区间调度问题(挑战程序设计竞赛)
    papamelon 257. 下界 lower_bound(挑战程序设计竞赛)
    202. 水洼计数 Lake Counting(挑战程序设计竞赛)
    papamelon 217. 栅栏修理 Fence Repair(挑战程序设计竞赛)
    papamelon 328. 电路板 Bridging signals(挑战程序设计竞赛)
    papamelon 201. 部分和问题
    papmelon 327. 木棒 Wooden Sticks(挑战程序设计竞赛) dp
    FCL中三个定时器的区别
    APM(异步编程模型)聚集技巧之等待直至完成聚集技巧
    C#的易失字段
  • 原文地址:https://www.cnblogs.com/janghe/p/9758559.html
Copyright © 2020-2023  润新知