`
957803796_1
  • 浏览: 120829 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

转换一个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://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

构造一个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}/",包含{1}个表", 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与DataSet的互转换类

    轻松实现xml与DataSet的相互转换

    XML和DataSet相互转换类

    XML 和DataSet 之间相互转换,满足你数据处理的需求。

    asp.net提供XML与dataset互相转换

    在asp.net中提供了数据集DateSet与Xml转换的类 XmlDatasetConvert code: XmlDatasetConvert 该类提供了四种方法: 1、将xml对象内容字符串转换为DataSet 2、将xml文件转换为DataSet 3、将DataSet转换为...

    DataSet Xml 互相转换

    DataSet Xml 互相转换

    C# DataSet和XML文件的相互转换

    C# DataSet和XML文件的相互转换 DataSet和XML文件的相互转换

    dataset与xml的相互转换类

    dataset与xml的相互转换类dataset与xml的相互转换类dataset与xml的相互转换类

    XML与DataTable相互转换

    XML与DataTable相互转换,可以直接使用

    DataSet与XML相互转换源码

    DataSet和XML的相互转换,有兴趣的朋友可以下载看看,很强大

    xml与datase相互转换

    ASP_NET中把xml转为dataset与xml字符串转为dataset及dataset转为xml的代码

    ASP.NET应用:DataSet 和XML

    xml与dataset介绍及它们之间相互转换的介绍

    XML基础类库

    XMLOperator基础类库,封装xml基础方法,设置节点内容,xml与dataset相互转换,xml节点的增删改。应该会对学习C# xml的同学有帮助

    Intraweb+SuperObject+IdHTTP实现三层构架

    为实现这一目标,该框架的关键技术是如何在Dataset与XML间相互转换,这里发布的压缩文件中包含TADODataset与XML相互转换的源代码: //将TADODataset转换成XML function RecordsetToXML(const ARecordset: ADOInt._...

    ado[1].net中文手册 学习 ado.net的重要资料

    了解约束和关系之间的相互关系:描述当使用 XML 架构元素在 DataSet 中创建约束时如何隐式地创建关系。   从 XML 推断 DataSet 关系结构:描述在从 XML 元素进行推断时所创建的 DataSet 的结果关系结构(即架构)。...

    数据库各个类的实例应用

    这些实例描述了数据的使用语法的实例,包括从Connction,Command到DataSet,DataAdapter,DataRelated,DataReader,的语法,也有DataSet与xml文档的交流以及数据库与xml的相互数据转化.其中也有一些图片来总结它们的...

    C#文件的读写

    C#文件的读写,其中包含了csv xml dataSet dataTable dataGridView文件格式的互相转化。

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    14.9.1 把DataSet转换为XML 14.9.2 把DataSet作为XML访问 14.10 总结 第三部分 构建ASP.NET网站 第15章 用户控件 15.1 用户控件基础 15.1.1 创建简单的用户控件 15.1.2 把页面转换成用户控件 15.2 ...

    ASP.NET4高级程序设计(第4版) 3/3

    14.9.1 把DataSet转换为XML 514 14.9.2 把DataSet作为XML访问 515 14.10 总结 517 第三部分 构建ASP.NET网站 第15章 用户控件 520 15.1 用户控件基础 520 15.1.1 创建简单的用户控件 521 15.1.2 把...

    C#全能速查宝典

    分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用的属性、方法、类和各种技术,...

Global site tag (gtag.js) - Google Analytics