日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

asp.net

XML与DataSet的相互转换

發(fā)布時間:2025/7/14 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML与DataSet的相互转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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文件(本地\網(wǎng)絡均可)為一個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("數(shù)據(jù)集名為\"{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("數(shù)據(jù)集名為\"{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的相互转换的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。