XML與DataSet的相互轉(zhuǎn)換類(lèi)
來(lái)源:易賢網(wǎng) 閱讀:819 次 日期:2014-08-18 16:17:43
溫馨提示:易賢網(wǎng)小編為您整理了“XML與DataSet的相互轉(zhuǎn)換類(lèi)”,方便廣大網(wǎng)友查閱!

送給大家一個(gè)XML與DataSet的相互轉(zhuǎn)換的類(lèi):

XmlDatasetConvert 該類(lèi)提供了四種方法:

1、將xml對(duì)象內(nèi)容字符串轉(zhuǎn)換為DataSet

2、將xml文件轉(zhuǎn)換為DataSet

3、將DataSet轉(zhuǎn)換為xml對(duì)象字符串

4、將DataSet轉(zhuǎn)換為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對(duì)象內(nèi)容字符串轉(zhuǎn)換為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文件轉(zhuǎn)換為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轉(zhuǎn)換為xml對(duì)象字符串

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方法寫(xiě)入文件.

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轉(zhuǎn)換為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方法寫(xiě)入文件.

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("");

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();

轉(zhuǎn)換一個(gè)XML文件(本地/網(wǎng)絡(luò)均可)為一個(gè)DataSet#region 轉(zhuǎn)換一個(gè)XML文件(本地/網(wǎng)絡(luò)均可)為一個(gè)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(@"

Console.WriteLine("數(shù)據(jù)集名為/"{0}/",包含{1}個(gè)表", ds.DataSetName, ds.Tables.Count);

foreach(DataTable dt in ds.Tables)

{

PrintTableName(dt.TableName);

};

#endregion

構(gòu)造一個(gè)DataSet,并轉(zhuǎn)換為XML字符串#region 構(gòu)造一個(gè)DataSet,并轉(zhuǎn)換為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", "書(shū)本1");

dt2.Rows.Add("b002", "書(shū)本2");

ds1.Tables.Add(dt1);

ds1.Tables.Add(dt2);

ds1.DataSetName = "方案";

string xmlOut = XmlDatasetConvert.ConvertDataSetToXML(ds1);

#endregion

轉(zhuǎn)換一個(gè)XML字符串為一個(gè)DataSet#region 轉(zhuǎn)換一個(gè)XML字符串為一個(gè)DataSet

DataSet ds2 = new DataSet();

ds2 = XmlDatasetConvert.ConvertXMLToDataSet(xmlOut);

Console.WriteLine("數(shù)據(jù)集名為/"{0}/",包含{1}個(gè)表", ds2.DataSetName, ds2.Tables.Count);

foreach (DataTable dt in ds2.Tables)

{

PrintTableName(dt.TableName);

};

#endregion

轉(zhuǎn)換一個(gè)Dataset為一個(gè)XML文件#region 轉(zhuǎn)換一個(gè)Dataset為一個(gè)XML文件

XmlDatasetConvert.ConvertDataSetToXMLFile(ds2, "c://adadsda1.xml");

#endregion

Console.ReadLine();

}

private static void PrintTableName(string tableName)

{

Console.WriteLine(tableName);

}

}

}

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看CMS教程
易賢網(wǎng)手機(jī)網(wǎng)站地址:XML與DataSet的相互轉(zhuǎn)換類(lèi)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!
相關(guān)閱讀CMS教程

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)