我正在尝试使用客户端 - 服务器方式代码在两个软件组件之间序列化XML文件。
首先,我将展示我是如何为Bitmaps解决同样的问题(代码已经简化为写这个):
最初,此代码在服务器端序列化我的位图:
public String ImageToString(Bitmap img)
{
byte[] byteArray = new byte[0];
using (MemoryStream stream = new MemoryStream())
{
img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.Close();
byteArray = stream.ToArray();
}
return Convert.ToBase64String(byteArray);
}
这会在客户端对位图进行反序列化:
public Bitmap StringToImage(string imageString)
{
byte[] array = Convert.FromBase64String(imageString);
Bitmap image = (Bitmap)Bitmap.FromStream(new MemoryStream(array));
return image;
}
我现在真正想做的是做同样的事情,但使用XML文件。我在服务器端:
public XmlDocument RemoteXMLfile()
{
XmlDocument doc = new XmlDocument();
doc.Load("myXMLFile.xml");
return doc;
}
但是这会让编译器抱怨,因为它发现XML文档没有标记为可序列化。
我的问题是:我该如何解决这个问题?谢谢!
答案 0 :(得分:0)
我回答我自己的问题:
加载XMLDocuments并将其转换为服务器端的字节数组:
public byte[] RemoteXMLfile()
{
XmlDocument doc = new XmlDocument();
doc.Load("myLocalXMLfile.xml");
byte[] byteArray = new byte[0];
using (MemoryStream stream = new MemoryStream())
{
doc.Save(stream);
stream.Close();
byteArray = stream.ToArray();
}
return byteArray;
}
在客户端,我们再次从其字节数组形式转换为XML文档:
byte[] docbytearray = RemoteXMLfile();
XmlDocument doc = new XmlDocument();
MemoryStream ms = new MemoryStream(docbytearray);
doc.Load(ms);