【发布时间】:2011-01-25 21:03:40
【问题描述】:
我得到了一个 XML 架构,我使用 xsd.exe 为其生成了一个类 FooClass。
我正在接收来自主机的 xml 请求,我从目录中获取它们并使用 XmlSerializer.Deserialize() 获取我的 FooClass 的实例。
嗯,这工作到现在很完美,现在仍然有效,但突然间我开始得到更大的 XML 文件(大约 300KB),而 Deserialize() 所花费的时间是不可接受的!用XMLTextReader() 加载同一个XML 文件需要几毫秒,反序列化的时间大约是1 分30 秒!
所以我想我会使用 XMLReader 来读取 XML 文件并自己构建FooClass!
但是在我开始重新编写所有代码之前,我想问一下是否有一种方法可以更快地使用XmlSerializer.Deserialize()?
我不确定 XMLSerializer 程序集是否对我有很大帮助?
这是我的代码,将在每个文件的循环中调用
using (MemoryStream ms = new MemoryStream(xmldata)
{
XmlSerializer sz = new XmlSerializer(typeof(FooClass));
foo = (FooClass)sz.Deserialize(ms);
}
提前致谢, AK
【问题讨论】:
-
你确定是 XML 而不是模式解析器超时?
-
感谢您的提示,但我确定!因为没有定义外部模式/命名空间!像 100 KB 这样的小 XML 文件可以被反序列化快到足以闭上眼睛 LOL。因此,如果解决将是一个问题,则必须适用于所有大小的 XML 文件!我猜!
标签: .net xml serialization xmlserializer