一、用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