using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Xml;
using System.IO;
using System.Text;
namespace OA.ZCommon.Utils
{
public class XmlConvertTo
{
/// <summary>
/// 將Xml字符串轉換成DataTable對象
/// </summary>
/// <param name="xmlStr">Xml字符串</param>
/// <param name="tableIndex">Table表索引</param>
/// <returns>DataTable對象</returns>
public static DataTable ConvertToDataTableByXmlStringIndex(string xmlStr, int Index)
{
return ConvertToDateSetByXmlString(xmlStr).Tables[Index];
}
/// <summary>
/// 將Xml字符串轉換成DataTable對象 第一個(gè)Table
/// </summary>
/// <param name="xmlStr">Xml字符串</param>
/// <returns>DataTable對象</returns>
public static DataTable ConvertToDataTableByXmlString(string xmlStr)
{
return ConvertToDateSetByXmlString(xmlStr).Tables[0];
}
/// <summary>
/// 將XML字符串轉換成DATASET
/// </summary>
/// <param name="xmlStr"></param>
/// <returns></returns>
public static DataSet ConvertToDateSetByXmlString(string xmlStr)
{
if (xmlStr.Length > 0)
{
StringReader StrStream = null;
XmlTextReader Xmlrdr = null;
try
{
DataSet ds = new DataSet();
//讀取字符串中的信息
StrStream = new StringReader(xmlStr);
//獲取StrStream中的數據
Xmlrdr = new XmlTextReader(StrStream);
//ds獲取Xmlrdr中的數據
//ds.ReadXmlSchema(Xmlrdr);
ds.ReadXml(Xmlrdr);
return ds;
}
catch (Exception e)
{
throw e;
}
finally
{
//釋放資源
if (Xmlrdr != null)
{
Xmlrdr.Close();
StrStream.Close();
}
}
}
else
{
return null;
}
}
/// <summary>
/// 將DATASET轉換成XML字符串
/// </summary>
/// <param name="ds"></param>
/// <returns></returns>
public static string ConvertToXmlStringByDataSet(DataSet ds)
{
return ConvertToXmlStringByDataSetIndex(ds,-1);
}
//// <summary>
/// 將DataSet對象中指定的Table轉換成XML字符串 當為-1時(shí)為第一個(gè)
/// </summary>
/// <param name="ds">DataSet對象</param>
/// <param name="tableIndex">DataSet對象中的Table索引</param>
/// <returns>XML字符串</returns>
public static string ConvertToXmlStringByDataSetIndex(DataSet ds, int Index)
{
if (Index != -1)
{
return ConvertToXmlStringByDataTable(ds.Tables[Index]);
}
else
{
return ConvertToXmlStringByDataTable(ds.Tables[0]);
}
}
/// <summary>
/// 將DATATABLE轉換成XML字符串
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string ConvertToXmlStringByDataTable(DataTable dt)
{
if (dt != null)
{
MemoryStream ms = null;
XmlTextWriter XmlWt = null;
try
{
ms = new MemoryStream();
//根據ms實(shí)例化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();
string returnValue = ucode.GetString(temp).Trim();
return returnValue;
}
catch (System.Exception ex)
{
throw ex;
}
finally
{
//釋放資源
if (XmlWt != null)
{
XmlWt.Close();
ms.Close();
ms.Dispose();
}
}
}
else
{
return "";
}
}
}
}
聯(lián)系客服