在阅读了大部分内容之后,我花了最近几个小时的时间阅读了以下代码,看起来过时了,或者看起来似乎不起作用。使用dot.net序列化和反序列化XML#
如果对任何人的帮助是最终的工作代码。自由随意评论,如果能:-)
public class SerializationHelper<T> {
#region static string SerializeObject(T obj, Encoding encoding)
/// <summary>
/// Serialize an [object] to an Xml String.
/// </summary>
/// <typeparam name="T">Object Type to Serialize</typeparam>
/// <param name="obj">Object Type to Serialize</param>
/// <param name="encoding">System.Text.Encoding Type</param>
/// <returns>Empty.String if Exception, XML string if successful</returns>
/// <example>
/// // UTF-16 Serialize
/// string xml = SerializationHelper<ObjectType>SerializeObject([object], new UnicodeEncoding(false, false));
/// </example>
/// <example>
/// // UTF-8 Serialize
/// string xml = SerializationHelper<ObjectType>SerializeObject([object], Encoding.UTF8);
/// </example>
public static string SerializeObject(T obj, Encoding encoding) {
if (obj == null) { return string.Empty; }
try {
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream memoryStream = new MemoryStream()) {
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings() { Encoding = encoding };
using (XmlWriter writer = XmlWriter.Create(memoryStream, xmlWriterSettings)) {
xmlSerializer.Serialize(writer, obj);
}
return encoding.GetString(memoryStream.ToArray());
}
}
catch {
return string.Empty;
}
}
#endregion
#region static T DeserializeObject(string xml, Encoding encoding)
/// <summary>
/// Deserialize an Xml String to an [object]
/// </summary>
/// <typeparam name="T">Object Type to Deserialize</typeparam>
/// <param name="xml">Xml String to Deserialize</param>
/// <param name="encoding">System.Text.Encoding Type</param>
/// <returns>Default if Exception, Deserialize object if successful</returns>
/// <example>
/// // UTF-16 Deserialize
/// [object] = SerializationHelper<ObjectType>DeserializeObject(xml, Encoding.Unicode)
/// </example>
/// <example>
/// // UTF-8 Deserialize
/// [object] = SerializationHelper<ObjectType>DeserializeObject(xml, Encoding.UTF8)
/// </example>
public static T DeserializeObject(string xml, Encoding encoding) {
if (string.IsNullOrEmpty(xml)) { return default(T); }
try {
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream memoryStream = new MemoryStream(encoding.GetBytes(xml))) {
// No settings need modifying here
XmlReaderSettings xmlReaderSettings = new XmlReaderSettings();
using (XmlReader xmlReader = XmlReader.Create(memoryStream, xmlReaderSettings)) {
return (T)xmlSerializer.Deserialize(xmlReader);
}
}
}
catch {
return default(T);
}
}
#endregion
}
好吧,这是代码 - 那么你的问题是什么?!?!你是否得到错误 - 如果是这样的话:**什么**错误?代码没有按照您期望的那样执行?如果是这样:你期望什么,你会得到什么?阅读关于[如何在SO上提出一个好问题](http://tinyurl.com/so-hints) – 2011-02-17 05:34:58
它不是一个概述性的问题,看看它是否正确,可以改进。在阅读了很多关于谷歌我遇到这个代码的许多不同版本,正如我所说的大多数是使用过时的方法,有些只是明显不工作。我也注意到,在这里特别是很多人输入答案,例如'我刚刚输入了这个我的头,它可能工作我不知道,但你明白'它是一个很好的手势,但有时不会很高兴在这里找到代码实际工作,经过测试,并被同意成为其他人的最佳实践,同时添加输入。 – 2011-02-17 06:09:21