XML格式與DataTable、DataSet、DataView格式的轉換
阿新 • • 發佈:2019-01-07
/**//// <summary>
/// 將DataSet物件資料儲存為XML檔案
/// </summary>
/// <param name="dt">DataSet</param>
/// <param name="xmlFilePath">XML檔案路徑</param>
/// <returns>bool值</returns>
public static bool CDataToXmlFile(DataTable dt, string xmlFilePath)
{
if ((dt != null) && (!string.IsNullOrEmpty(xmlFilePath)))
{
string path = HttpContext.Current.Server.MapPath(xmlFilePath);
MemoryStream ms = null;
XmlTextWriter XmlWt = null;
try
{
ms = new MemoryStream();
//根據ms例項化XmlWt
XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
//獲取ds中的資料
dt.WriteXml(XmlWt);
int count = (int)ms.Length;
byte[] temp = new byte[count];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(temp, 0, count);
//返回Unicode編碼的文字
UnicodeEncoding ucode = new UnicodeEncoding();
//寫檔案
StreamWriter sw = new StreamWriter(path);
sw.WriteLine("<?xml version="1.0" encoding="utf-8"?>");
sw.WriteLine(ucode.GetString(temp).Trim());
sw.Close();
return true;
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
//釋放資源
if (XmlWt != null)
{
XmlWt.Close();
ms.Close();
ms.Dispose();
}
}
}
else
{
return false;
}
}
/**//// <summary>
/// 將DataSet物件中指定的Table轉換成XML檔案
/// </summary>
/// <param name="ds">DataSet物件</param>
/// <param name="tableIndex">DataSet物件中的Table索引</param>
/// <param name="xmlFilePath">xml檔案路徑</param>
/// <returns>bool]值</returns>
public static bool CDataToXmlFile(DataSet ds, int tableIndex, string xmlFilePath)
{
if (tableIndex != -1)
{
return CDataToXmlFile(ds.Tables[tableIndex], xmlFilePath);
}
else
{
return CDataToXmlFile(ds.Tables[0], xmlFilePath);
}
}
/**//// <summary>
/// 將DataSet物件轉換成XML檔案
/// </summary>
/// <param name="ds">DataSet物件</param>
/// <param name="xmlFilePath">xml檔案路徑</param>
/// <returns>bool]值</returns>
public static bool CDataToXmlFile(DataSet ds, string xmlFilePath)
{
return CDataToXmlFile(ds, -1, xmlFilePath);
}
/**//// <summary>
/// 將DataView物件轉換成XML檔案
/// </summary>
/// <param name="dv">DataView物件</param>
/// <param name="xmlFilePath">xml檔案路徑</param>
/// <returns>bool]值</returns>
public static bool CDataToXmlFile(DataView dv, string xmlFilePath)
{
return CDataToXmlFile(dv.Table, xmlFilePath);
}
}
/// 將DataSet物件資料儲存為XML檔案
/// </summary>
/// <param name="dt">DataSet</param>
/// <param name="xmlFilePath">XML檔案路徑</param>
/// <returns>bool值</returns>
public static bool CDataToXmlFile(DataTable dt, string xmlFilePath)
{
if ((dt != null) && (!string.IsNullOrEmpty(xmlFilePath)))
{
string path = HttpContext.Current.Server.MapPath(xmlFilePath);
MemoryStream ms = null;
XmlTextWriter XmlWt = null;
try
{
ms = new MemoryStream();
//根據ms例項化XmlWt
XmlWt = new XmlTextWriter(ms, Encoding.Unicode);
//獲取ds中的資料
dt.WriteXml(XmlWt);
int count = (int)ms.Length;
byte[] temp = new byte[count];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(temp, 0, count);
//返回Unicode編碼的文字
UnicodeEncoding ucode = new UnicodeEncoding();
//寫檔案
StreamWriter sw = new StreamWriter(path);
sw.WriteLine("<?xml version="1.0" encoding="utf-8"?>");
sw.WriteLine(ucode.GetString(temp).Trim());
sw.Close();
return true;
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
//釋放資源
if (XmlWt != null)
{
XmlWt.Close();
ms.Close();
ms.Dispose();
}
}
}
else
{
return false;
}
}
/**//// <summary>
/// 將DataSet物件中指定的Table轉換成XML檔案
/// </summary>
/// <param name="ds">DataSet物件</param>
/// <param name="tableIndex">DataSet物件中的Table索引</param>
/// <param name="xmlFilePath">xml檔案路徑</param>
/// <returns>bool]值</returns>
public static bool CDataToXmlFile(DataSet ds, int tableIndex, string xmlFilePath)
{
if (tableIndex != -1)
{
return CDataToXmlFile(ds.Tables[tableIndex], xmlFilePath);
}
else
{
return CDataToXmlFile(ds.Tables[0], xmlFilePath);
}
}
/**//// <summary>
/// 將DataSet物件轉換成XML檔案
/// </summary>
/// <param name="ds">DataSet物件</param>
/// <param name="xmlFilePath">xml檔案路徑</param>
/// <returns>bool]值</returns>
public static bool CDataToXmlFile(DataSet ds, string xmlFilePath)
{
return CDataToXmlFile(ds, -1, xmlFilePath);
}
/**//// <summary>
/// 將DataView物件轉換成XML檔案
/// </summary>
/// <param name="dv">DataView物件</param>
/// <param name="xmlFilePath">xml檔案路徑</param>
/// <returns>bool]值</returns>
public static bool CDataToXmlFile(DataView dv, string xmlFilePath)
{
return CDataToXmlFile(dv.Table, xmlFilePath);
}
}