http://www.codeproject.com/Articles/10429/Convert-XML-data-to-object-and-back-using-serializをアドバイスの基礎として使用してオブジェクトをシリアル化し、XMLを取得しました。XMLを2008データベースのテキストフィールドに保存しました。デシリアライズすると、InvalidOperationExceptionが発生します。オブジェクトを逆シリアル化し、そもそもシリアル化が不十分であることがわかった経験はありますか?
public static Request ToObject(string xml)
{
StringReader stream = null;
XmlTextReader reader = null;
try
{
// serialise to object
XmlSerializer serializer = new XmlSerializer(typeof(Request));
stream = new StringReader(xml); // read xml data
reader = new XmlTextReader(stream); // create reader
// covert reader to object
return (Request)serializer.Deserialize(reader);
}
catch
{
return null;
}
finally
{
if (stream != null) stream.Close();
if (reader != null) reader.Close();
}
}
public static string ToXML(Request oRequest)
{
MemoryStream stream = null;
TextWriter writer = null;
try
{
stream = new MemoryStream(); // read xml in memory
writer = new StreamWriter(stream, Encoding.Unicode);
// get serialise object
XmlSerializer serializer = new XmlSerializer(typeof(Request));
serializer.Serialize(writer, oRequest); // read object
int count = (int)stream.Length; // saves object in memory stream
byte[] arr = new byte[count];
stream.Seek(0, SeekOrigin.Begin);
// copy stream contents in byte array
stream.Read(arr, 0, count);
UnicodeEncoding utf = new UnicodeEncoding(); // convert byte array to string
return utf.GetString(arr).Trim();
}
catch
{
return string.Empty;
}
finally
{
if (stream != null) stream.Close();
if (writer != null) writer.Close();
}
}