我想将一个对象序列化为 XML,但我不想将它保存在磁盘上。我想将它保存在 XElement 变量中(用于 LINQ),然后反序列化回我的对象。
我该怎么做?
最佳答案
您可以使用这两个扩展方法在 XElement 和您的对象之间进行序列化和反序列化。
public static XElement ToXElement<T>(this object obj)
{
using (var memoryStream = new MemoryStream())
{
using (TextWriter streamWriter = new StreamWriter(memoryStream))
{
var xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(streamWriter, obj);
return XElement.Parse(Encoding.ASCII.GetString(memoryStream.ToArray()));
}
}
}
public static T FromXElement<T>(this XElement xElement)
{
var xmlSerializer = new XmlSerializer(typeof(T));
return (T)xmlSerializer.Deserialize(xElement.CreateReader());
}
用法
XElement element = myClass.ToXElement<MyClass>();
var newMyClass = element.FromXElement<MyClass>();
关于c# - 将对象序列化为 XElement 并在内存中反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8373552/