将C#对象序列化为XML - 最快的方式?

时间:2013-01-21 09:50:32

标签: .net xml serialization xml-serialization

我有一个将c#对象序列化为xml文件的应用程序。我目前正在使用.Net XmlSerializer。

我遇到的问题是,我需要序列化~8000个主节点(每次有4-10个子节点),目前我需要15-20分钟才能将它们全部序列化。

我要保留相同的XML输出,因为该文件是由我的另一个程序读取的,我不能让它们改变它们读取文件的方式。

我做了一些搜索,我发现了很多比较,但它们都涉及使用protobuf-net,它具有二进制序列化。

所以我的问题是:如何改善序列化时间?另一个序列化器?向我的模型添加更多属性(目前我只有XmlName,列表也是如此)。

谢谢!

2 个答案:

答案 0 :(得分:2)

看看下面的链接,有一些提高XML序列化性能的技巧

http://msdn.microsoft.com/en-us/library/ff650685.aspx

如果您可以更改组件的逻辑,我会使用数据库来存储这么大的XML,因为尚未进行序列化来存储非常大的XML文件

答案 1 :(得分:0)

由于瓶颈可能是大字符串处理,您可能需要考虑手写代码直接写入FileStream。 如果您喜欢冒险,您还可以尝试为CGbR Project生成编写IGenerator的代码。但是,只有你有许多不同的课程,这才有意义。