因为用到了不少如DataTable等数据结构。需要保存在硬盘上。为了想偷一点小小的懒.所以使用了类库中的XmlSerializer。发现使用的时候还有不少的曲折。不过经过研究觉得。这样一来方便许多。主要的想法是在memory里面开了一个空间来存放xmlserializer产生的文件。这样就不需要产生在硬盘上了
代码如下:
//Serializer
XmlDocument doc = new XmlDocument();
XmlSerializer ser = new XmlSerializer(typeof(DataTable));
MemoryStream ms = new MemoryStream();// create a stream in memory
XmlWriter writer = XmlWriter.Create(ms);
//dt.WriteXml(writer);
try
{
ser.Serialize(writer, dataTable);
}
catch (Exception ex)
{
throw new Exception("Something wrong while serialize datatable", ex);
}
writer.Close();
byte[] b = ms.ToArray();
ms.Close();
ms = new MemoryStream(b);
XmlDocument tempDoc = new XmlDocument();
tempDoc.Load(ms);
ms.Close();
XmlNode tableNode = doc.ImportNode(tempDoc.DocumentElement, true);
//tableNode name is generate automaticaly is called DataTable
chartDataNode.AppendChild(tableNode);
//Deserialize
XmlSerializer ser = new XmlSerializer(typeof(DataTable));
XmlDocument tempDoc = new XmlDocument();
//Serializer Create a node called datatable in above code
XmlNode rootnode = tempDoc.ImportNode(doc.SelectSingleNode(".//DataTable"), true);
//doc is the xmldocment create when Serialize
tempDoc.AppendChild(rootnode);
MemoryStream ms = new MemoryStream();
XmlWriter writer2 = XmlWriter.Create(ms);
tempDoc.Save(writer2);
writer2.Close();
byte[] b2 = ms.ToArray();
ms.Close();
ms = new MemoryStream(b2);
XmlReader reader = XmlReader.Create(ms);
dataTable = (DataTable)ser.Deserialize(reader);
reader.Close();
ms.Close();