【问题标题】:Serializing XML Document through application domains通过应用程序域序列化 XML 文档
【发布时间】:2023-10-03 12:16:01
【问题描述】:

我正在尝试在两个软件组件之间序列化一个 XML 文件,使用客户端-服务器风格的代码。

首先,我将展示我如何解决位图的相同问题(编写此代码已被简化):

最初,这段代码在服务器端序列化我的位图:

    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 文档未标记为可序列化。

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

【问题讨论】:

    标签: xml-serialization remoting


    【解决方案1】:

    我回答我自己的问题:

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

    【讨论】:

      最近更新 更多