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-04 00:41:14

XML与DataSet对象的关系的相关文章

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

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

ADO.NET读书笔记系列之------DataSet对象

ado|笔记|对象 一.特点介绍 1.处理脱机数据,在多层应用程序中很有用. 2.可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法. 3.处理分级数据 4.缓存更改 5.XML的完整性:DataSet对象和XML文档几乎是可互换的. 二.使用介绍 1.创建DataSet对象:DataSet ds = new DataSet("DataSetName"); 2.查看调用SqlDataAdapter.Fill创建的结构     da.Fill(ds,"Ord

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

XML和数据库之间的关系

xml|数据|数据库  1.0 简介    本论文简要的探讨了XML和数据库之间的关系,同时列出一些可以使用数据库处理XML文档的软件. 虽然这里不打算详尽地介绍这些软件,但是笔者希望它能够描述使用数据库处理XML文档中的主要部分.这里有点偏向与关系数据库,因为我的经验如此.     2.0 XML是数据库吗?     在开始讨论XML和数据库之前,我们需要回答一个萦绕在很多心头的问题: "XML是数据库吗?"在严格意义上将,如果"XML"是指XML文档时,答案是&

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

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

使用ibatis处理复杂对象数据关系的实例

如何使用 ibatis 处理复杂对象数据关系 iBatis 是一个开源的对象关系映射程序,其工作是将对象映射到 SQL 语句.和其它 O/R Mapping 框架不同,iBatis 开发者需要自己编写和维护 SQL 语句,这给开发带来了很多的灵活性的同时,也带来了很大的复杂度与工作量.在一个数据库中,常见的对象关系有:1 对 1,1 对多,多对多,单表映射,多表映射,单主键,多主键以及对象主键等种种情况.在使用 ibatis 处理数据映射时,需要跟据不同的情况,写出不同的 sql 语句和 sql

XML、DataSet、DataGrid结合一_XML/RSS

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

xml 与 DataSet 互相转换

本文转载:http://www.cnblogs.com/30ErLi/archive/2010/09/21/1832694.html   XmlDatasetConvert 该类提供了四种方法:     1.将xml对象内容字符串转换为DataSet     2.将xml文件转换为DataSet     3.将DataSet转换为xml对象字符串     4.将DataSet转换为xml文件   using System;using System.Collections.Generic;usin

C#中两种方式将Xml匹配为对象集合

一.前言 上一篇随笔主要将实体转换成相应的Xml或者Xml对象,未考虑到属性的Attribute特性,以后有时间再整理一下.本文中的Xml匹配涉及到类的特性和属性的特性,并且对该类的匹配进行了相应的优化,尽量将反射引起的性能问题降低最低(其实,对于对象数量不是很多的Xml匹配,性能是可以忽略不计的). 二.类图设计 主要思路为:通过反射将与类名的节点匹配,然后匹配属性(属性特性名称或者属性名称)值,设计图如下所示: 类图中各个类的作用如下: PropertyAttribute.ClassAttr