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,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:\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}\",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相关文章