欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > asp.net >内容正文

asp.net

XML与DataSet的相互转换

发布时间:2025/7/14 asp.net 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 XML与DataSet的相互转换 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

from:http://www.cnblogs.com/guoerzzf/archive/2009/04/09/1432668.html

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("<?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();
  •             #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
  •             #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
  •             #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
  •             #region 转换一个Dataset为一个XML文件
  •             XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, "c:\\adadsda1.xml");
  •             #endregion
  •             Console.ReadLine();
  •         }
  •         private static void PrintTableName(string tableName)
  •         {
  •             Console.WriteLine(tableName);
  •         }
  •     }
  • }
  • 总结

    以上是生活随笔为你收集整理的XML与DataSet的相互转换的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。