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