加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML与DataSet的相互转换类

发布时间:2020-12-16 02:24:34 所属栏目:百科 来源:网络整理
导读:?? XmlDatasetConvert 该类提供了四种方法: 1、将xml对象内容字符串转换为DataSet 2、将xml文件转换为DataSet 3、将DataSet转换为xml对象字符串 4、将DataSet转换为xml文件 XmlDatasetConvert.cs using System; using System.Collections.Generic; using Sy
??


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,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,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:study01CSharp_Study02SourceXmlDesignXmlDesignSave_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}",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); } } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读