【C#】dataset匯出xml(xslt)源碼

來源:互聯網
上載者:User

 

 一、用StreamWriter 來實現

 匯出Xml#region 匯出Xml
  private bool ExportXml1(string FilePath)
  ...{
   DataSet ds=new DataSet();
   try
   ...{    
    DataTable tb = (DataTable)this.ExportGrid.DataSource;
    DataTable ExportTb=tb.Copy();
    //DataTable ExportTb=new DataTable();

    ds.Tables.Add(ExportTb);     
    string path=Constant.ApplicationDirectory+"/xml/Xyh.xslt";
    string s="<?xml version="1.0" encoding="utf-8" ?>"+" "+"<?xml-stylesheet href=""+path+"" _fcksavedurl="""+path+""" type="text/xsl"?>"+" ";
    //string s="<?xml version="1.0" encoding="UTF-8" ?>"+" "+"<?xml-stylesheet href="aa.xsl" type="text/xsl"?>"+" ";
    s=s+ds.GetXml().ToString(); 
    Stream stream =File.OpenWrite(FilePath+".xml"); 
    using(StreamWriter writer =new StreamWriter(stream)) 
    ...{ 
     writer.Write(s); 
    } 

    //ds.WriteXml(FilePath+".xml");
    this.ParentWindow.Cursor=Cursors.Default;
   }
   catch
   ...{
    MessageBox.Show("儲存出錯,請檢查!");
    return false;
   }
   finally
   ...{
    //GC.Collect();
    //    ds.Clear();
    //    ds.Dispose();    
   }
   return true;
  } 
  #endregion

二、用 XmlTextWriter 來實現,這樣可以格式化欄位。

  匯出Xml#region 匯出Xml
  private void ExportXml(string FilePath)
  ...{
   string path=Constant.ApplicationDirectory+"/xml/Xyh.xslt";   
   string  PItext   ="type='text/xsl' href='"+path+"'";   
   DataSet ds=new DataSet();
   DataTable tb = (DataTable)this.ExportGrid.DataSource;
   DataTable ExportTb=tb.Copy();
   ds.Tables.Add(ExportTb);   
   XmlTextReader XTReader = new XmlTextReader(ds.GetXml(),XmlNodeType.Element,null);
   XmlTextWriter XTWriter = new XmlTextWriter(FilePath+".xml",Encoding.UTF8);   
   XTWriter.WriteStartDocument();
    XTWriter.WriteProcessingInstruction("xml-stylesheet",PItext);
   string fieldName = "" ;
   while(XTReader.Read())
   ...{
    switch(XTReader.NodeType)
    ...{
     case XmlNodeType.Element:
      XTWriter.WriteStartElement(XTReader.Name);
      fieldName = XTReader.Name;
      break;      
     case XmlNodeType.Text:      
      if(fieldName.ToLower() == "brithday"||fieldName.ToLower() == "gzsj"||fieldName.ToLower() == "rdsj"||fieldName.ToLower() == "zzsj")
      ...{      
       DateTime dt = DateTime.Parse (XTReader.Value.ToString());      
       XTWriter.WriteString(dt.ToString("yyyy-MM-dd"));
      }
      else
       XTWriter.WriteString(XTReader.Value);
      break;
     case XmlNodeType.EndElement:
      XTWriter.WriteEndElement();
      break;
     default:      
      break;
    }
   }
   XTWriter.Close(); 
   this.ParentWindow.Cursor=Cursors.Default;
  } 
  #endregion

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.