XML序列化或从XML对象读取?

时间:2011-04-19 17:31:28

标签: c# xml deserialization

我有不同的XML文件,我需要阅读。我想知道是否应该将文件反序列化为自定义对象,或者只使用XDocument对象和Linq-to-XML读取数据。

文件的大小范围从1-2kb到3mb +,不同的对象也有复杂程度(有些有属性,有些有子,有些有,有些没有)。

我认为使用对象而不是Linq-to-XML会更容易,但是创建这些对象需要一些时间。是否有任何经验法则或关于何时反序列化而不是Linq的建议?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

这实际上取决于您对数据的处理方式。如果您没有使用XML文档提供的所有信息,那么基于LINQ的方法可能是最简单的。考虑采用RSS提要,只跟踪文章日期,而不是其他任何内容。在这种情况下,使用反序列化技术并不能为您做任何事情。

如果您正在使用XML文档中的每一个最后一点数据,并且其结构反映了对象模型的数据,那么肯定会反序列化它。这是我一直在做的事情,比如设置文件,甚至是简单的文件格式。

在你的情况下,它听起来已经存在,并且是由一些外部源创建的,并且你的代码中没有数据的对象表示,所以我建议使用基于LINQ的方法。此外,您提到了文件中的大量变体,因此LINQ的灵活性将再次派上用场。根据您的描述,这是一个疯狂的猜测。

答案 1 :(得分:1)

您可以使用xsd.exe工具,该工具可以在给定XML文件的情况下生成这些类:

C:\work>xsd test.xml
C:\work>xsd /classes test.xsd

没有真正的经验法则。我个人更喜欢使用强类型对象,除非文件大小变大,在这种情况下我切换到XmlReader。