2009-10-13 79 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类是可序列化的)?

然后您可以检查哪种类型被序列化并创建适当的实例。