1.  DataSet To XML:

如何把数据导出来变成XML? 这种问题经常遇到,vs提供了dataset做为数据库里面数据的容器,并且为这个容器添加了一系列游泳的属性:  WriteXml就是这个功能的主要方法:

  1. protected void Button6_Click(object sender, EventArgs e) 
  2.     System.Data.DataTable excelTable = new System.Data.DataTable(); 
  3.  
  4.     SqlConnection sqlconn = new SqlConnection("Data Source=efacsdb;Initial Catalog=whatifdb;User ID=sa; Password=L-BBgD7q"); 
  5.     sqlconn.Open(); 
  6.     SqlDataAdapter sda = new SqlDataAdapter("select top 10 * from temp_upload_mapping", sqlconn); 
  7.     DataSet ds = new DataSet(); 
  8.     sda.Fill(ds, "table1"); 
  9.     excelTable = ds.Tables["table1"]; 
  10.  
  11.     //使用WriteXml很容易就产生了一个xml: 
  12.     ds.WriteXml(@"c:\temp\buyer_group.xml"); 
  13.     sqlconn.Close(); 
  14.  

出来的结果如下: (table1即为dataset的datatable, Newdataset即为dataset的名字;)

  1. <?xml version="1.0" standalone="yes"?> 
  2. <NewDataSet> 
  3.   <table1> 
  4.     <rowid>4</rowid> 
  5.     <colname>suppliername</colname> 
  6.     <tablename>t_tt_sourcing_generate_sup_basic</tablename> 
  7.     <itemname>Company Name</itemname> 
  8.   </table1> 
  9.   <table1> 
  10.     <rowid>6</rowid> 
  11.     <colname>mgr_contactor</colname> 
  12.     <tablename>t_tt_sourcing_contact_detail</tablename> 
  13.     <itemname>Contact Person</itemname> 
  14.   </table1> 
  15. </NewDataSet> 

 

2.  XML to DATASET:

得到的XML文件以后,只要文件满足一定的格式要求,就可以通过ReadXml直接独到Dataset里面 ;

  1. protected void Button7_Click(object sender, EventArgs e) 
  2.     string fromPath = @"c:\temp\buyer_group.xml"
  3.     FileInfo xmlFile = new FileInfo(fromPath); 
  4.     DataSet dsXML = null
  5.  
  6.     if (xmlFile.Exists) 
  7.     { 
  8.         FileStream fsReadxml = new FileStream(fromPath,FileMode.Open); 
  9.         XmlTextReader myXmlReader = new XmlTextReader(fsReadxml); 
  10.         dsXML = new DataSet(); 
  11.  
  12.         dsXML.ReadXml(myXmlReader); 
  13.  
  14.         DataView dv = new DataView(dsXML.Tables[0]); 
  15.         dv.RowFilter = " tablename='t_tt_sourcing_contact_detail'"
  16.         gvXML.DataSource = dv; 
  17.         gvXML.DataBind(); 
  18.  
  19.         myXmlReader.Close(); 
  20.     } 

测试过程table ddl:

  1. drop table temp_upload_mapping 
  2. create table temp_upload_mapping (rowid int,colname varchar(60),tablename varchar(60),itemname varchar(100)) 
  3. insert into temp_upload_mapping values ( 
  4.  
  5. insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('Company Name',4,'suppliername','t_tt_sourcing_generate_sup_basic'
  6. insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('Contact Person',6,'mgr_contactor','t_tt_sourcing_contact_detail'
  7. insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('Contact Person Title',7,'mgr_title','t_tt_sourcing_contact_detail'
  8. insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('email',8,'mgr_email','t_tt_sourcing_contact_detail'
  9. insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('Tel',9,'mgr_telephone','t_tt_sourcing_contact_detail'
  10. insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('Fax',10,'mgr_fax','t_tt_sourcing_contact_detail'
  11. insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('Address',11,'mgr_address','t_tt_sourcing_contact_detail'insert into temp_upload_mapping (itemname,rowid,colname,tablename) values ('Province/State',12,'mgr_province','t_tt_sourcing_contact_detail'