文示例C#中XML与datatable互换的两个函数:
/// <summary>
/// 可以序列化为xml文件保存起来
/// </summary>
/// <param name="mydt">datatable(必须指定TableName,否则转换失败)</param>
/// <param name="Filename">指定XML文件名</param>
public void SerializeDataTableXmlFile(DataTable mydt,string Filename)
{
// Insert code to set properties and fields of the object.
XmlSerializer mySerializer = new XmlSerializer(typeof(DataTable));
// To write to a file, create a StreamWriter object.
StreamWriter myWriter = new StreamWriter(System.Web.HttpContext.Current.Server.MapPath("~/") @"\Serialize\" Filename "_" Session["UserName"] ".xml");
try
{
mySerializer.Serialize(myWriter, mydt);
myWriter.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex); //拋出異常,在調用處去處理
}
}
/// <summary>
/// xml反序列化成datatable
/// </summary>
/// <param name="Filename">XML文件名</param>
/// <returns>datatable</returns>
public DataTable DeserializeXmlFileDataTable(string Filename)
{
DataTable mydt;
// Constructs an instance of the XmlSerializer with the type
// of object that is being deserialized.
XmlSerializer mySerializer = new XmlSerializer(typeof(DataTable));
// To read the file, creates a FileStream.
FileStream myFileStream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/") @"\Serialize\" Filename "_" Session["UserName"] ".xml", FileMode.Open);
// Calls the Deserialize method and casts to the object type.
try
{
mydt = (DataTable)mySerializer.Deserialize(myFileStream);
myFileStream.Close();
return mydt;
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex); //拋出異常,在調用處去處理
}
}
本文来自网学(http://myeducs.cn),转载请注明出处:http://myeducs.cn/lunwen-resource/Net-biancheng/C-shixian-XML-yu-DataTable-huzhuandeshili/
公司实际开发案例:
//
//导出选择日期的公示名单(弹出xml文件下载提示)
//
DataTable dt = BussinessUtilNS.SelectJcmd(_wsid,_nsnf,exps, _ywlx);
if (dt == null || dt.Rows.Count == 0)
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ShowErr", "<script>alert('没有检索到满足条件的信息,请重新选择公示日期!')</script>");
return;
}
else
{
//
//导出XML文档
//
string filename = string.Empty;//文件名
string filepath = string.Empty;//文件路径
filename = "廉租低保住房条件家庭" + GetFileName()+".xml";
System.IO.MemoryStream ms = new System.IO.MemoryStream();
dt.WriteXml(ms, System.Data.XmlWriteMode.IgnoreSchema);
Response.Clear();
filename = Server.UrlEncode(filename);
Response.ContentEncoding = Encoding.GetEncoding("GB2312");
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.AddHeader("Content-Length", ms.Length.ToString());
Response.ContentType = "application/octet-stream";
byte[] b = ms.ToArray();
Response.OutputStream.Write(b, 0, b.Length);
HttpContext.Current.ApplicationInstance.CompleteRequest();
ms.Close();//清理资源
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"","alert('导出成功!')",true);
}
/// <summary>
/// 可以序列化为xml文件保存起来
/// </summary>
/// <param name="mydt">datatable(必须指定TableName,否则转换失败)</param>
/// <param name="Filename">指定XML文件名</param>
public void SerializeDataTableXmlFile(DataTable mydt,string Filename)
{
// Insert code to set properties and fields of the object.
XmlSerializer mySerializer = new XmlSerializer(typeof(DataTable));
// To write to a file, create a StreamWriter object.
StreamWriter myWriter = new StreamWriter(System.Web.HttpContext.Current.Server.MapPath("~/") @"\Serialize\" Filename "_" Session["UserName"] ".xml");
try
{
mySerializer.Serialize(myWriter, mydt);
myWriter.Close();
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex); //拋出異常,在調用處去處理
}
}
/// <summary>
/// xml反序列化成datatable
/// </summary>
/// <param name="Filename">XML文件名</param>
/// <returns>datatable</returns>
public DataTable DeserializeXmlFileDataTable(string Filename)
{
DataTable mydt;
// Constructs an instance of the XmlSerializer with the type
// of object that is being deserialized.
XmlSerializer mySerializer = new XmlSerializer(typeof(DataTable));
// To read the file, creates a FileStream.
FileStream myFileStream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/") @"\Serialize\" Filename "_" Session["UserName"] ".xml", FileMode.Open);
// Calls the Deserialize method and casts to the object type.
try
{
mydt = (DataTable)mySerializer.Deserialize(myFileStream);
myFileStream.Close();
return mydt;
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex); //拋出異常,在調用處去處理
}
}
本文来自网学(http://myeducs.cn),转载请注明出处:http://myeducs.cn/lunwen-resource/Net-biancheng/C-shixian-XML-yu-DataTable-huzhuandeshili/
公司实际开发案例:
//
//导出选择日期的公示名单(弹出xml文件下载提示)
//
DataTable dt = BussinessUtilNS.SelectJcmd(_wsid,_nsnf,exps, _ywlx);
if (dt == null || dt.Rows.Count == 0)
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ShowErr", "<script>alert('没有检索到满足条件的信息,请重新选择公示日期!')</script>");
return;
}
else
{
//
//导出XML文档
//
string filename = string.Empty;//文件名
string filepath = string.Empty;//文件路径
filename = "廉租低保住房条件家庭" + GetFileName()+".xml";
System.IO.MemoryStream ms = new System.IO.MemoryStream();
dt.WriteXml(ms, System.Data.XmlWriteMode.IgnoreSchema);
Response.Clear();
filename = Server.UrlEncode(filename);
Response.ContentEncoding = Encoding.GetEncoding("GB2312");
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
Response.AddHeader("Content-Length", ms.Length.ToString());
Response.ContentType = "application/octet-stream";
byte[] b = ms.ToArray();
Response.OutputStream.Write(b, 0, b.Length);
HttpContext.Current.ApplicationInstance.CompleteRequest();
ms.Close();//清理资源
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"","alert('导出成功!')",true);
}