【问题标题】:Speed and XML Parsing in .NET - Serialization vs XML DOM vs?.NET 中的速度和 XML 解析 - 序列化 vs XML DOM vs?
【发布时间】:2010-10-29 10:43:48
【问题描述】:

我之前做过 XML 解析,但从未大规模进行过。 如果我正在处理许多类似于这种格式的文档:

<?xml version="1.0" ?>
<items comment="something...">
  <uid>6523453</uid>
  <uid>94593453</uid>
</items>

解析这些文档的最快方法是什么?
1) XML DOM
2) XML 序列化 - 再水化为 .NET 对象
3)其他一些方法

更新
我忘了提到平均大约有 8000 个 uid 元素。

【问题讨论】:

    标签: .net xml dom parsing xml-parsing


    【解决方案1】:

    使用XmlReader 肯定是最快的方法,当然您必须手动完成所有解析。它直接从流中读取而不缓存任何内容,尽管与 DOM 相比使用起来不太方便。

    比较您建议的两个:序列化应该比使用 DOM 更快,因为(我相信)它不会将整个树缓存在内存中 - 如果您专门针对它,它当然也有一个更易于使用的界面执行序列化。

    【讨论】:

      【解决方案2】:

      我会说 Xml 序列化将是两全其美的。您可以获得易用性以及良好的速度。 xml 序列化有一些额外的开销......但是,如果您手动使用 XmlReader,您至少会在使用该阅读器重新创建对象图时自行复制(如果不超过)该开销。

      【讨论】:

        【解决方案3】:

        根据您需要处理的数据,@Noldorin 提到的 XmlReader 是流式处理的最佳选择。如果您需要使用 XPath 对数据进行更多的 ad-hoc 样式访问,那么 XPathDocument 将比原始 XML 文档快得多。

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

        【讨论】:

        • 这是真正的答案:视情况而定。这取决于你想对数据做什么。如果您正在做“XML”的事情(如 XPATH 查询、XSL 转换等),那么您将需要 XmlReader。如果您需要将数据作为对象进行操作,请使用序列化。
        猜你喜欢
        • 2012-08-11
        • 2010-09-16
        • 2012-06-21
        • 1970-01-01
        • 2011-05-16
        • 2010-10-25
        • 2012-12-29
        • 1970-01-01
        • 2010-12-25
        相关资源
        最近更新 更多