/// <summary>
/// 将指定datatable转换为其等效的xml流形式。
/// </summary>
/// <param name="table">datatable对象</param>
/// <returns></returns>
public string toxmlstring(datatable table)
{
if(table == null)
{
return null;
}
stringbuilder content = new stringbuilder();
stringwriter writer = new stringwriter(content);
xmltextwriter xmlwriter = new xmltextwriter(writer);
try
{
dataset ds = new dataset();
ds.tables.add(table.copy());
ds.writexml(xmlwriter);
return content.tostring();
}
finally
{
writer.close();
xmlwriter.close();
}
}
/// <summary>
/// 将指定的xml流转换为其等效的dataset对象。
/// </summary>
/// <param name="xmlstream">xml流</param>
/// <returns></returns>
public dataset todataset(string xmlstream)
{
if(xmlstream == null || xmlstream.trim().length == 0)
{
return null;
}
stringreader reader = new stringreader(xmlstream);
xmltextreader xmlreader = new xmltextreader(reader);
try
{
dataset ds = new dataset();
ds.readxml(xmlreader);
return ds;
}
finally
{
reader.close();
xmlreader.close();
}
}
2. 经过测试的序列代码
//将DataSet序列化
DataSet ds;
MemoryStream ms = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, ds);
byte[] bs = new byte[ms.Length];
bs = ms.GetBuffer();
ms.Seek(0, SeekOrigin.Begin);
ms.Close();
ms.Dispose();
//反序列化
DataSet ds = null;
IFormatter formatter = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ms.Write(bs, 0, bs.Length);
ms.Seek(0, SeekOrigin.Begin);
object obj = formatter.Deserialize(ms) as DataSet;
ds = obj as DataSet;