• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 校园文章 > 正文

    [XML与DataSet的相互转换类] 进程的三种状态及相互之间的转换

    时间:2020-05-29来源:山茶花美文网 本文已影响 山茶花美文网手机站

    送给大家一个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("");

    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

    ///n?cmd=1&class=sportnews&tn=rss

    //F:/study/001CSharp_Study/002Source/XmlDesign/XmlDesign/Save_Plan.xml

    ds = XmlDatasetConvert.ConvertXMLFileToDataSet(@"/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字符串#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);

    }

    }

    }

    • [XML与DataSet的相互转换类] 进程的三种状态及相互之间的转换 相关文章:
    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全