我有不同的XML文件,我需要阅读。我想知道是否应该将文件反序列化为自定义对象,或者只使用XDocument
对象和Linq-to-XML读取数据。
文件的大小范围从1-2kb到3mb +,不同的对象也有复杂程度(有些有属性,有些有子,有些有,有些没有)。
我认为使用对象而不是Linq-to-XML会更容易,但是创建这些对象需要一些时间。是否有任何经验法则或关于何时反序列化而不是Linq的建议?
感谢您的帮助!
答案 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。