我需要在C#中处理相当大的XML文件(这里的大可能会达到1GB),包括执行一些复杂的XPath查询。我的问题是,我通常通过System.XML库进行处理的标准方式喜欢在对其进行任何操作之前将整个文件加载到内存中,这可能会导致这些大小的文件出现内存问题。
我不需要更新这些文件,只需读取它们并查询其中包含的数据。一些XPath查询非常复杂,涉及多个父子级关系层次-我不确定是否会影响使用流读取器而不是将数据作为块加载到内存中的能力。
我可以看到使其工作的一种方法是使用基于流的方法执行简单的分析,也许将XPath语句包装到我稍后可以运行在文件上的XSLT转换中,尽管这似乎有点复杂。
或者,我知道有一些元素XPath查询无法遍历,因此我猜我可以根据原始树结构将文档分解成一系列较小的片段,这些片段可能足够小以在不引起太多混乱的情况下在内存中处理。
我已经试图解释了我的目标,所以如果我的总体方法完全错误,我相信你们可以纠正我...