网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 XML与DataSet的相互转换类
内容
    送给大家一个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
    //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://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字符串#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);
    }
    }
    }
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/14 6:16:56