PDA

View Full Version : سوال: serialize & deserialize



sima_2n5k
چهارشنبه 24 شهریور 1389, 10:51 صبح
سلام
من کد serialize و نوشتم در قسمت سرویسم object های فرم میگیره و serialize می کنه ولی وقتی میخوام deserialize کنم پیغام خطای There is an error in XML doc(2,2) میده نمی دونم چرا؟ اینم کداش
public static string SerializeObject(object obj)
{
string xml = "";
XmlSerializer serializer = new XmlSerializer(obj.GetType());
MemoryStream ms = new MemoryStream();
serializer.Serialize(ms, obj);
xml = Encoding.UTF8.GetString(ms.ToArray());
ms.Dispose();

return xml;
}



private object DeSerializeAnObject(string xmlOfAnObject)
{
object objXML = new object();
System.IO.StringReader read = new StringReader(xmlOfAnObject);

System.Xml.Serialization.XmlSerializer serializer = new
System.Xml.Serialization.XmlSerializer(xmlOfAnObje ct.GetType());

System.Xml.XmlReader reader = new XmlTextReader(read);

try
{

objXML =(object) serializer.Deserialize(reader); //to
in khat error migire!

return objXML;

}

catch
{

throw;

}

finally
{

reader.Close();

read.Close();

read.Dispose();

}

}

gwbasic
پنج شنبه 25 شهریور 1389, 13:34 عصر
اگر debug می کردید مشکلتون براحتی پیدا می شد.
در متدی که برای سریالایز نوشتید یعنی (SerializeObject) یک type رو سریال می کنید و در نهایت یک string برمی گردانید مثلا Person رو به string البته سریال شده بر می گردانید
حالا وقتی این string که در اصل یک Person سریال شده است رو می خواهید دی سریال کنید باید همین type را برای عمل Deserialize مشخص کنید بنایراین باید این تغییر را در متد (DeSerializeAnObject) بدهید:


System.Xml.Serialization.XmlSerializer(typeof(Pers on));


کد زیر هم برای نمونه می تونید استفاده کنید که Type در اینجا List<string< هست