你好,
我有一个 8MB 的 XML 文件,我想反序列化。 我正在使用这段代码:
public static T Deserialize<T>(string xml)
{
TextReader reader = new StringReader(xml);
Type type = typeof(T);
XmlSerializer serializer = new XmlSerializer(type);
T obj = (T)serializer.Deserialize(reader);
return obj;
}
此代码运行大约一分钟,对我来说似乎相当慢。我尝试使用 sgen.exe 预编译序列化 dll,但这并没有改变性能。
我还有哪些其他选择可以提高性能?
[编辑] 我需要反序列化创建的对象来执行(基本)转换。 XML 是从外部网络服务接收的。
最佳答案
XmlSerializer 使用反射,因此如果性能有问题,则不是最佳选择。
您可以使用 XmlDocument
构建 XML 文档的 DOM或 XDocument
类并使用它,或者更快地使用 XmlReader
. XmlReader
但是需要您自己编写任何对象映射(如果需要)。
哪种方法最好完全取决于您要对 XML 数据执行的操作。您是只需要提取某些值,还是必须处理和编辑整个文档对象模型?
关于c# - 反序列化 XML 文件的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/511322/