生活随笔
收集整理的這篇文章主要介紹了
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????{????????????????public?static?DataSet?ConvertXMLToDataSet(string?xmlData)????????{????????????StringReader?stream?=?null;????????????XmlTextReader?reader?=?null;????????????try????????????{????????????????DataSet?xmlDS?=?new?DataSet();????????????????stream?=?new?StringReader(xmlData);????????????????????????????????reader?=?new?XmlTextReader(stream);????????????????xmlDS.ReadXml(reader);????????????????return?xmlDS;????????????}????????????catch?(System.Exception?ex)????????????{????????????????throw?ex;????????????}????????????finally????????????{????????????????if?(reader?!=?null)????????????????????reader.Close();????????????}????????}????????????????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);????????????????????????????????reader?=?new?XmlTextReader(stream);????????????????xmlDS.ReadXml(reader);????????????????????????????????return?xmlDS;????????????}????????????catch?(System.Exception?ex)????????????{????????????????throw?ex;????????????}????????????finally????????????{????????????????if?(reader?!=?null)????????????????????reader.Close();????????????}????????}????????????????public?static?string?ConvertDataSetToXML(DataSet?xmlDS)????????{????????????MemoryStream?stream?=?null;????????????XmlTextWriter?writer?=?null;????????????try????????????{????????????????stream?=?new?MemoryStream();????????????????????????????????writer?=?new?XmlTextWriter(stream,?Encoding.Unicode);????????????????????????????????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();????????????}????????}????????????????public?static?void?ConvertDataSetToXMLFile(DataSet?xmlDS,?string?xmlFile)????????{????????????MemoryStream?stream?=?null;????????????XmlTextWriter?writer?=?null;????????????try????????????{????????????????stream?=?new?MemoryStream();????????????????????????????????writer?=?new?XmlTextWriter(stream,?Encoding.Unicode);????????????????????????????????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();????????????????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 ????????????????????????????????????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的相互转换的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。