一起谈.NET技术,XML与DataSet对象的关系

  在.NET Framework 中,经常使用XML 作为存储和传输各种数据的格式。DataSet 中的数据可以转换成XML 的形式来表示和存储。我们可以使用XML 对象同步和转换DataSet 的数据,而DataSet 也可以存储和传输XML 格式的数据。

  XML 与 DataSet 的关系如下图所示:

  DataSet 对象的常用方法如下:

  A.  使用ReadXml( ) 方法:从文件或流中加载XML 数据,填充DataSet 对象。DataSet 对象.ReadXML( 文件路径字符串|stream 对象, XmlReadMode 枚举值[可以省略] ) ;

  B.  使用WriteXml( ) 方法:将DataSet 对象中的数据以XML 格式写出到文件或流中。DataSet 对象.WriteXml( 文件路径字符串| stream 对象, XmlWriteMode 枚举值[可以省略] ) ;

  C.  使用ReadXmlSchema( ) 方法:将Shema 模式文件读入DataSet 对象。DataSet 对象.ReadXmlSchema( Stream | FileName | TextReader | XmlReader ) ;

  D.  使用WriteXmlSchema( ) 方法:将DataSet 对象的Shema 模式文件写出到文件或流。DataSet 对象.WriteXmlSchema( Stream | FileName | TextWriter | XmlWriter ) ;

  E.  使用GetXmlSchema( ) 方法:将DataSet 对象的Shema 模式,以字符串的形式获得。DataSet 对象.GetXmlSchema( );

  F.  使用GetXml( ) 方法:将DataSet 对象的XML 格式的数据集,以字符串的形式获得。DataSet 对象.GetXml( );

  接下来,通过一个综合示例进行演示。Person.xml 文件如下:


<?xml version="1.0" encoding="UTF-8"?>
<Persons>
<person>
<ID>0</ID>
<Name>Mark</Name>
<Age>18</Age>
</person>
<person>
<ID>1</ID>
<Name>Jorn</Name>
<Age>22</Age>
</person>
<person>
<ID>2</ID>
<Name>Aderson</Name>
<Age>30</Age>
</person>
</Persons>

  Customer.xsd 文件如下:


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schema-microsoft-com:xml-msdata" elementFormDefault="qualified" attributeFormDefault="unqualified" id="Customers">
<xs:element name="Customers" msdata:IsDataSet="true" msdata:EnforceConstraints="False">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="Customer" type="customersType"/>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:complexType name="customersType">
<xs:sequence>
<xs:element name="CustomersID" type="xs:string" minOccurs="0"/>
<xs:element name="CustomersName" type="xs:string" minOccurs="0"/>
<xs:element name="CustomersAge" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

  Winform 程序的源代码如下:


namespace DataSet_XML_Demo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataSet ds = new DataSet();

//读取XML文档的数据到DataSet
private void btnReadXML_Click(object sender, EventArgs e)
{
ds.ReadXml("http://www.cnblogs.com/" + "Person.xml");
dataGridView1.DataSource = ds.Tables[0];
}

//将DataSet中的数据写出到XML文档
private void btnWriteXML_Click(object sender, EventArgs e)
{
ds.WriteXml("http://www.cnblogs.com/New.xml");
ds.WriteXml("http://www.cnblogs.com/New_Alter.xml", XmlWriteMode.DiffGram);
}

//加载Schema给DataSet
private void btnReadXmlSchema_Click(object sender, EventArgs e)
{
DataSet newDataSet = new DataSet();
newDataSet.ReadXmlSchema("http://www.cnblogs.com/Customer.xsd");
dataGridView1.DataSource = newDataSet.Tables[0];
}

//将DataSet的Schema写出
private void btnWriteXmlSchema_Click(object sender, EventArgs e)
{
DataSet newDataSet = new DataSet();
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("id", typeof(int));
DataColumn dc2 = new DataColumn("name", typeof(string));
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
newDataSet.Tables.Add(dt);

dataGridView1.DataSource = newDataSet;
dataGridView1.DataMember = "Table1";
newDataSet.WriteXmlSchema("http://www.cnblogs.com/newSchema.xsd");
}

//GetXml()方法的使用
private void btnGetXml_Click(object sender, EventArgs e)
{
DataSet newXml = new DataSet();
newXml.ReadXml("http://www.cnblogs.com/" + "Person.xml");
dataGridView1.DataSource = newXml.Tables[0];

//GetXml():返回DataSet中XML形式的字符串
string strXml = newXml.GetXml();
textBox1.Text = strXml;
}

//GetXmlSchema()方法的使用
private void btnGetXmlSchema_Click(object sender, EventArgs e)
{
/* 注意:
如果DataSet已经拥有一个Schema模式,
再加载新的Schema模式文件,
则会自动将两个Schema模式合并。
*/
DataSet newSchema = new DataSet();
newSchema.ReadXmlSchema("http://www.cnblogs.com/Customer.xsd");
dataGridView1.DataSource = newSchema.Tables[0];

//GetXmlSchema():返回DataSet所使用的Schema 模式文件的字符串
string strSchema = newSchema.GetXmlSchema();
textBox1.Text = strSchema;
}
}
}

  Winform 程序的界面效果如下:

  源码下载

时间: 2024-09-02 05:56:56

一起谈.NET技术,XML与DataSet对象的关系的相关文章

XML与DataSet对象的关系

在.NET Framework 中,经常使用XML 作为存储和传输各种数据的格式.DataSet 中的数据可以转换成XML 的形式来表示和存储.我们可以使用XML 对象同步和转换DataSet 的数据,而DataSet 也可以存储和传输XML 格式的数据. XML 与 DataSet 的关系如下图所示: DataSet 对象的常用方法如下: A.  使用ReadXml( ) 方法:从文件或流中加载XML 数据,填充DataSet 对象.DataSet 对象.ReadXML( 文件路径字符串|st

一起谈.NET技术,浅谈如何使用.NET存储XML数据

XML Bulk Load和Updategrams,这两种客户端技术使用带有注解的大纲指定XML文档内容和数据库的表之间的映射:OpenXML是一种服务器端技术,它允许你在XML文档上定义关系视图,有了OpenXML的关系视图,你就能使用T-SQL代码查询XML文档中的数据并把结果存储在你的SQL Server数据库中. 这三种技术中的每一种都是为特定的目的设计的.XML Bulk Load把来自很大的XML文档的数据存储在SQL Server中:Updategrams执行SQL Server数

一起谈.NET技术,XML和实体序列化和反序列化

近来的项目中用到了序列化就抽空学习了一下,拿出来给大家分享一下: 类为我们提供了自己对象串行化(Serialize)和反串行化(Deserialize)的xml的方法,该类可以序列化的内容: 公共类的公共读写字段或者属性 XmlElement对象 XmlNode对象 Dataset对象 实现了Icollection 或IEnumerable的类 该类在设计中有一个设计需求: 需要被序列化的类要提供一个空参数的构造函数,否则运行时会出现异常 在开发过程中可能会有很多地方要用到对象和XML相互转化,

一起谈.NET技术,如何将XML与OBJECT进行相互转换(泛型以及通用方法)

对于ORMCodeHelper(Keny的),完全的采用插件式开发,即插即用,个人感觉还是比较爽的,架构不错.它包括了SQL SERVER 2000,SQL SERVER 2005以及ORACLE的相关C#代码的生成.比哥一年前写的那个牛多了,哈哈,哥去年乱写了个网页版的(http://www.cnblogs.com/jasenkin/archive/2010/02/11/1667511.html),现在看一年前的代码,哥感叹,这个谁写的代码,TMD实在写的太烂了!!!当然,ORMCodeHel

XML、DataSet、DataGrid结合写成广告管理程序(一)

本文介绍一下ASP.Net中对XML的用法,这里只是展现了XML与DataSet相结合的用法.其实ASP.Net对XML的操作的方法与对象是很多的,比如XmlDataDocument,XmlTextReader等,这些对象功能很全,也很实用. 本文以Adrotator控件使用的XML为例(新手可以先看一下Adrotator控件的用法),写出了一个广告管理程序.这个程序,飞刀用到的控件主要是DataGrid,可以说已经用到了DataGrid几乎全部功能,大家在关注XML的同时,可以同时学到Data

一起谈.NET技术,提高ASP.NET应用程序性能的十大方法

一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量. 如果你是用动态的SQL语句来返回多个数据集,那我建议你用存储过程来替代动态的SQL语句.是否把业务逻辑写到存储过程中,这个有点争议.但是我认为,把业务逻辑写到存储过程里面可以限制返回结果集的大小,减小网络数据的流量,在逻辑层也不用在过滤数据,

一起谈.NET技术,Discuz!NT 缓存设计简析 [原创]

       作为一个社区类型软件,大并发支持和高效稳定运行永远是"硬道理",而有效安全的使用缓存恰恰能起到事倍功半的效果.而.NET本身所提供的缓存机制又显得过于"单薄",比如说订制不太灵活方便, 缓存对象之间层次感不强, 使用时缺乏统一的管理等等.           Discuz!NT缓存产生背景:        在去年五月份我加入Discuz!NT项目组时,发现这个项目当时还未使用缓存机制.主要原因是项目还处于起步阶段,很多东西还只是有想法,但未付诸实施,或

一起谈.NET技术,2010 .NET面试题整理之基础篇

开篇语:对于已有工作经验的朋友,也许面试题已显得不怎么重要,但是如果你应聘的还仅仅是个普通的程序员,相信在很多的公司都还是会先拿出一套面试题,可能对整个面试影响不大,但做好面试题无疑会赢得第一个好的印象,特别对于那些缺少项目经验的应届毕业生.很多时候,在看这些面试题的时候,是否有感过曾经那些一个个不起眼的小程序题所针对的问题正是自己在项目中所犯的错误?是否会发现,原来还有这么多东西自己都还从未去想过?趁自己这次重新找工作之际,对常见面试题进行进行一次重新整理,与大家共同学习!本贴将会进行不断完善

XML与DataSet的相互转换类

xml|转换 送给大家一个XML与DataSet的相互转换的类: XmlDatasetConvert 该类提供了四种方法:     1.将xml对象内容字符串转换为DataSet     2.将xml文件转换为DataSet     3.将DataSet转换为xml对象字符串     4.将DataSet转换为xml文件 XmlDatasetConvert.cs 复制C#源代码using System;using System.Collections.Generic;using System.T