2009-10-13 76 views
0

我想用XmlSerializer將我的對象保存到硬盤(如緩存)。在這種情況下,我沒有任何問題。如何將XML反序列化未知類型的對象?

但是,當我想要將此XML反序列化爲對象時,出現錯誤。有什麼方法 將XML反序列化爲未知對象或我創建的對象?

+1

代碼?例外? – Scoregraphic 2009-10-13 06:49:16

+1

用什麼語言? – Rahul 2009-10-13 06:50:12

回答

-1

另外,比較有效(比DOM或SAX)數據綁定的做法是在此article

-2

可以使用SerializationHelper.DeSerializeNow因爲在我的崗位描述: http://borismod.blogspot.com/2008/07/nunit-serialization-test.html

internal class SerializationHelper 
{ 
    private static readonly string DefaultFilePath = "test.dat"; 

    internal static void SerializeNow(object c) 
    { 
    SerializeNow(c, DefaultFilePath); 
    } 

    internal static void SerializeNow(object c, string filepath) 
    { 
    FileInfo f = new FileInfo(filepath); 
    using (Stream s = f.Open(FileMode.Create)) 
    { 
     BinaryFormatter b = new BinaryFormatter(); 
    b.Serialize(s, c); 
    } 
    } 

    internal static object DeSerializeNow() 
    { 
    return DeSerializeNow(DefaultFilePath); 
    } 

    internal static object DeSerializeNow(string filepath) 
    { 
    FileInfo f = new FileInfo(filepath); 
    using (Stream s = f.Open(FileMode.Open)) 
    { 
     BinaryFormatter b = new BinaryFormatter(); 
     return b.Deserialize(s); 
    } 
    } 
} 
+1

問題是關於* XML *序列化,而不是二進制序列化... – 2009-10-13 08:58:36

+0

對不起,我錯過了XML中的問題。你可以使用這個: 你有什麼異常? public Object DeserializeObject(String pXmlizedString) XmlSerializer xs = new XmlSerializer(typeof(Automobile)); MemoryStream memoryStream = new MemoryStream(StringToUTF8ByteArray(pXmlizedString)); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream,Encoding.UTF8); return xs.Deserialize(memoryStream); } – 2009-10-13 16:24:59

1

有沒有辦法在.NET中反序列化爲未知對象。

要成功序列化/反序列化XML對象,該類必須具有默認構造函數。最好的方法是向我們顯示確切的錯誤信息。你能做到嗎?

0

爲什麼不首先序列化你的類的類型(System.Type類是可序列化的)?

然後您可以檢查哪種類型被序列化並創建適當的實例。