3

我想知道解析 XML 的最佳方式,即在性能(空间和时间)方面。

我通过以下方法完成了解析

  • 使用常规的“for each”循环
  • 使用 Linq
  • 点表示法或 lambda 表示法。
4

2 回答 2

2

没有看到你的代码,想要优化它并不容易。但是,您应该考虑一个普遍的观点:

Linq-to-XML 是一个基于 DOM 的解析器,因为它将整个 XML 文档读入一个驻留在内存中的模型中。所有查询都针对 DOM 执行。对于大型文档,构建 DOM 可能会占用大量内存和 CPU。此外,如果编写效率低下,您的 Linq-to-XML 查询可以多次导航相同的树节点。

作为替代方案,请考虑使用像XmlReader这样的串行 (SAX) 解析器。这种类型的解析器不会为您的文档创建基于内存的模型,并且以只进的方式运行,迫使您只读取每个元素一次。

于 2012-04-18T13:10:57.353 回答
0

我这是一个大而复杂的 XML 文件,您可以尝试使用 SAX 类型的 XML 解析器来解析它。SAX 解析器将为 XML 文件中的每个节点生成一个事件,因此您无需将整个文件加载到内存中。如果一个小文件应该在你的应用程序中作为 Web 响应进行分析并且必须进行验证,我建议你使用 DOM 类型的 XML 解析器。

于 2012-04-18T13:10:18.197 回答