我想用XmlSerializer
將我的對象保存到硬盤(如緩存)。在這種情況下,我沒有任何問題。如何將XML反序列化未知類型的對象?
但是,當我想要將此XML反序列化爲對象時,出現錯誤。有什麼方法 將XML反序列化爲未知對象或我創建的對象?
我想用XmlSerializer
將我的對象保存到硬盤(如緩存)。在這種情況下,我沒有任何問題。如何將XML反序列化未知類型的對象?
但是,當我想要將此XML反序列化爲對象時,出現錯誤。有什麼方法 將XML反序列化爲未知對象或我創建的對象?
另外,比較有效(比DOM或SAX)數據綁定的做法是在此article:
可以使用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);
}
}
}
問題是關於* XML *序列化,而不是二進制序列化... – 2009-10-13 08:58:36
對不起,我錯過了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
有沒有辦法在.NET中反序列化爲未知對象。
要成功序列化/反序列化XML對象,該類必須具有默認構造函數。最好的方法是向我們顯示確切的錯誤信息。你能做到嗎?
爲什麼不首先序列化你的類的類型(System.Type類是可序列化的)?
然後您可以檢查哪種類型被序列化並創建適當的實例。
代碼?例外? – Scoregraphic 2009-10-13 06:49:16
用什麼語言? – Rahul 2009-10-13 06:50:12