关于性能,使用C#解析XML的最佳方法是什么?

3

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

我已经通过以下方法进行了解析

  • 使用常规的“for each”循环
  • 使用Linq
  • 点符号或Lambda符号。
2个回答

2

如果没有看到您的代码,优化它就不容易。 不过,有一个普遍的观点需要考虑:

Linq-to-XML是一种基于DOM的解析器,因为它将整个XML文档读入内存中的模型中。所有查询都针对DOM执行。对于大型文档,构建DOM可能会消耗大量的内存和CPU资源。此外,如果编写的Linq-to-XML查询效率低下,则可以多次访问同一树节点。

作为替代方案,请考虑使用串行(SAX)解析器,例如XmlReader。此类解析器不会创建基于内存的文档模型,并以单向方式运行,强制您只读取每个元素一次。


0

如果你需要解析一个庞大而复杂的XML文件,建议使用SAX类型的XML解析器。SAX解析器将为XML文件中的每个节点生成一个事件,因此您不需要将整个文件加载到内存中。如果您需要分析作为Web响应的小文件,并且必须进行验证,则建议使用DOM类型的XML解析器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接