【问题标题】:XML serialization or reading from XML Objects?XML 序列化或从 XML 对象读取?
【发布时间】:2011-04-19 17:31:28
【问题描述】:

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: c# xml deserialization


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为你的观点是正确的,尤其是第一段。谢谢!
    【解决方案2】:

    您可以使用xsd.exe 工具,它可以根据您给定的 XML 文件生成这些类:

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多