gpt4 book ai didi

c# - 将对象序列化为 XElement 并在内存中反序列化

转载 作者:IT王子 更新时间:2023-10-29 03:47:45 25 4
gpt4 key购买 nike

我想将一个对象序列化为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com