`
957803796_1
  • 浏览: 124458 次
  • 性别: 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相互转换类

    } } }}上述代码定义了一个名为`XmlDatasetConvert`的类,它提供了四个静态方法,用于在XML与DataSet之间进行转换。这些方法分别是: 1. `ConvertXMLToDataSet(string xmlData)`: 这个方法接收一个XML字符串`xml...

    xml与DataSet的互转换类

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

    DataSet Xml 互相转换

    - `XmlWriter`:也可以使用`System.Xml.XmlWriter`类,通过创建`XmlWriter`实例并指定输出流,然后调用`DataSet`的`WriteXml()`方法。这提供了更细粒度的控制,如设置编码、格式化等。 2. `XML`转`DataSet`: - ...

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

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

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

    在C#编程中,经常需要在`DataSet`和XML文件之间进行转换,以便于数据的持久化、跨平台传输或与其他系统集成。下面我们将详细探讨这两种数据结构之间的转换过程。 1. `DataSet`到XML的转换: 当你需要将`DataSet`的...

    dataset与xml的相互转换类

    本文将深入探讨`DataSet`与XML的相互转换方法及其应用场景。 首先,`DataSet`到XML的转换主要通过`DataSet.WriteXml`方法实现。这个方法将`DataSet`的内容写入一个XML文件或流中。例如: ```csharp DataSet ...

    XML与DataTable相互转换

    ### XML与DataTable相互转换知识点详解 #### 一、概述 在.NET框架中,XML与`DataTable`之间的相互转换是一项常用的技术。它可以帮助开发者在不同场景下灵活地处理数据,例如在网络传输、数据存储或者与其他系统...

    DataSet与XML相互转换源码

    将`DataSet`与XML进行相互转换,可以方便地在两者之间传递数据,增强程序的灵活性和兼容性。 一、DataSet简介 `DataSet`是ADO.NET的核心组件之一,它是一个内存中的数据集合,可以包含一个或多个`DataTable`,每个`...

    C#操作XML文件方法举例,dataset转换XML

    ### XML与DataSet的相互转换 #### 从XML到DataSet 将XML文件转换为`DataSet`是数据处理中常见的需求。这通常涉及到解析XML文件并将结构化的数据加载到`DataSet`中,以便进一步的数据处理或存储。使用`ReadXml`方法...

    dataset和xml得转换用法

    本文将深入探讨如何在C#环境下实现Dataset与XML之间的相互转换,这不仅能够帮助开发者更好地理解数据存储格式,还能提高数据处理效率。 ### 一、从XML到DataSet #### 1. 获取XML并直接转换为DataSet 首先,我们来...

    ASP.net中DataSet和XML深入编程

    例如,你可能先从数据库中获取数据并填充到DataSet,然后将DataSet的内容转换为XML格式,发送给客户端进行进一步处理。或者,你可能从服务器接收XML数据,将其加载到DataSet中,然后在网页上显示这些数据。 为了...

    XML与数据库相互转换

    总结来说,"XML与数据库相互转换"是一个关键的IT技能,涉及数据的读取、解析、操作和存储。在VS2003中,开发者可以利用.NET Framework提供的强大工具和API来实现这一目标,提高数据处理的效率和灵活性。对于"数据库...

    DataSet 与Byte[]之间的相互转换

    本篇将详细讲解如何在`DataSet`与`Byte[]`之间进行转换,并涉及数据压缩的相关知识。 1. `DataSet`转`Byte[]`: 当我们需要将`DataSet`的内容保存到磁盘或者通过网络发送时,可以将其转换为`Byte[]`。这通常通过...

    ASP.NET应用:DataSet 和XML

    描述:“xml与dataset介绍及它们之间相互转换的介绍” **知识点概览** 本文将深入探讨ASP.NET应用程序中,`DataSet`与`XML`的使用及其相互转换的方法,旨在为开发人员提供一个全面的理解框架。 ### 数据集...

    xml与datase相互转换

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

    XML与Access的相互读写

    在本例中,DataSet作为桥梁,将Access数据库中的记录转换为XML格式。 XML的读取通常通过XML解析器来实现,例如DOM(Document Object Model)或LINQ to XML。DOM将XML文档加载到内存中的树形结构,允许开发者遍历和...

    asp.net之dataset深入学习

    DataAdapter是DataSet与数据库之间的桥梁,通过ExecuteNonQuery和ExecuteReader方法,将SQL查询结果转换为DataSet。同时,DataSet还支持数据的更新、插入和删除操作,通过DataAdapter的Update方法,可以将DataSet中...

    XML基础类库

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

    XML和DateTable互转

    这些代码通常会包含以上步骤,通过.NET Framework的System.Xml和System.Data命名空间中的类来实现XML和DataTable的相互转换。 实际应用中,还需要注意以下几点: - **处理嵌套结构**:如果XML包含嵌套元素,可能...

Global site tag (gtag.js) - Google Analytics