2014-02-23 44 views
0

我試圖序列化兩個軟件組件之間的XML文件,客戶端 - 服務器時尚的代碼。通過應用程序域序列化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文檔未標記爲可序列化。

我的問題是:我該如何解決這個問題?謝謝!

回答

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); 
相關問題