通过应用程序域序列化XML文档

时间:2014-02-23 23:29:32

标签: xml-serialization remoting

我正在尝试使用客户端 - 服务器方式代码在两个软件组件之间序列化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文档没有标记为可序列化。

我的问题是:我该如何解决这个问题?谢谢!

1 个答案:

答案 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);