详解XML与DataSet对象的关系
创始人
2024-07-14 05:21:39
0

在.NET Framework 中,经常使用XML 作为存储和传输各种数据的格式。

DataSet 中的数据可以转换成XML 的形式来表示和存储。

我们可以使用XML 对象同步和转换DataSet 的数据,而DataSet 也可以存储和传输XML 格式的数据。

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

XmlDataDocument_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 文件如下:

  1.    
  2.    
  3.       
  4.      0   
  5.      Mark   
  6.      18   
  7.       
  8.       
  9.      1   
  10.      Jorn   
  11.      22   
  12.       
  13.       
  14.      2   
  15.      Aderson   
  16.      30   
  17.       
  18.   

Customer.xsd 文件如下:

  1.    
  2.    
  3.        
  4.            
  5.                
  6.                    
  7.                
  8.            
  9.        
  10.        
  11.            
  12.                
  13.                
  14.                
  15.            
  16.        
  17.   

Winform 程序的源代码如下:

  1. namespace DataSet_XML_Demo   
  2. {   
  3.     public partial class Form1 : Form   
  4.     {   
  5.         public Form1()   
  6.         {   
  7.             InitializeComponent();   
  8.         }   
  9.         DataSet ds = new DataSet();   
  10.     
  11.         //读取XML文档的数据到DataSet   
  12.         private void btnReadXML_Click(object sender, EventArgs e)   
  13.         {   
  14.             ds.ReadXml("http://www.cnblogs.com/" + "Person.xml");   
  15.             dataGridView1.DataSource = ds.Tables[0];   
  16.         }   
  17.     
  18.         //将DataSet中的数据写出到XML文档   
  19.         private void btnWriteXML_Click(object sender, EventArgs e)   
  20.         {   
  21.             ds.WriteXml("http://www.cnblogs.com/New.xml");   
  22.  ds.WriteXml("http://www.cnblogs.com/New_Alter.xml", XmlWriteMode.DiffGram);   
  23.         }   
  24.     
  25.         //加载Schema给DataSet   
  26.         private void btnReadXmlSchema_Click(object sender, EventArgs e)   
  27.         {   
  28.             DataSet newDataSet = new DataSet();   
  29.             newDataSet.ReadXmlSchema("http://www.cnblogs.com/Customer.xsd");   
  30.             dataGridView1.DataSource = newDataSet.Tables[0];   
  31.         }   
  32.     
  33.         //将DataSet的Schema写出   
  34.         private void btnWriteXmlSchema_Click(object sender, EventArgs e)   
  35.         {   
  36.             DataSet newDataSet = new DataSet();   
  37.             DataTable dt = new DataTable();   
  38.             DataColumn dc1 = new DataColumn("id", typeof(int));   
  39.             DataColumn dc2 = new DataColumn("name", typeof(string));   
  40.             dt.Columns.Add(dc1);   
  41.             dt.Columns.Add(dc2);   
  42.             newDataSet.Tables.Add(dt);   
  43.     
  44.             dataGridView1.DataSource = newDataSet;   
  45.             dataGridView1.DataMember = "Table1";   
  46.   newDataSet.WriteXmlSchema("http://www.cnblogs.com/newSchema.xsd");   
  47.         }   
  48.     
  49.         //GetXml()方法的使用   
  50.         private void btnGetXml_Click(object sender, EventArgs e)   
  51.         {   
  52.             DataSet newXml = new DataSet();   
  53.             newXml.ReadXml("http://www.cnblogs.com/" + "Person.xml");   
  54.             dataGridView1.DataSource = newXml.Tables[0];   
  55.     
  56.             //GetXml():返回DataSet中XML形式的字符串   
  57.             string strXml = newXml.GetXml();   
  58.             textBox1.Text = strXml;   
  59.         }   
  60.     
  61.         //GetXmlSchema()方法的使用   
  62.         private void btnGetXmlSchema_Click(object sender, EventArgs e)   
  63.         {   
  64.              /* 注意:   
  65.                 如果DataSet已经拥有一个Schema模式,   
  66.                 再加载新的Schema模式文件,   
  67.                 则会自动将两个Schema模式合并。   
  68.              */   
  69.             DataSet newSchema = new DataSet();   
  70.       newSchema.ReadXmlSchema("http://www.cnblogs.com/Customer.xsd");   
  71.             dataGridView1.DataSource = newSchema.Tables[0];   
  72.     
  73.             //GetXmlSchema():返回DataSet所使用的Schema模式文件的字符串   
  74.             string strSchema = newSchema.GetXmlSchema();   
  75.             textBox1.Text = strSchema;   
  76.         }   
  77.     }   
  78. }  

Winform 程序的界面效果如下:

Winform 程序的界面效果图 

原文标题:XML 与DataSet 对象的关系

链接:http://www.cnblogs.com/xugang/archive/2010/09/16/1827988.html

【编辑推荐】

  1. W3C发布XProc规范 XML企业级开发更加轻松
  2. XML新手入门 创建构造良好的XML
  3. XML在Web应用中的优势 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...