gpt4 book ai didi

c# - 在 .NET 中如何最好地使用 XPath 处理非常大的 XML 文件?

转载 作者:可可西里 更新时间:2023-11-01 03:00:54 25 4
gpt4 key购买 nike

我需要在 C# 中对相当大的 XML 文件(这里的大文件可能超过 1 GB)进行一些处理,包括执行一些复杂的 xpath 查询。我遇到的问题是,我通常通过 System.XML 库执行此操作的标准方法喜欢在对文件执行任何操作之前将整个文件加载到内存中,这可能会导致这种大小的文件出现内存问题。

我根本不需要更新文件,只需读取文件并查询其中包含的数据即可。一些 XPath 查询非常复杂并且跨越多个级别的父子类型关系 - 我不确定这是否会影响使用流读取器而不是将数据作为 block 加载到内存中的能力。

我认为使它起作用的一种方法是使用基于流的方法执行简单分析,也许将 XPath 语句包装到 XSLT 转换中,之后我可以在这些文件中运行,尽管它看起来有点复杂。

或者我知道有一些 XPath 查询不会遇到的元素,所以我想我可以根据它的原始树结构将文档分成一系列较小的片段,这些片段可能足够小以进行处理在内存中不会造成太大的破坏。

我已经尝试在这里解释我的目标,所以如果我在一般方法方面完全错误地咆哮树,我相信你们可以让我正确...

最佳答案

XPathReader 就是答案。它不是 C# 运行时的一部分,但可以从 Microsoft 下载。这是一个 MSDN article .

如果您使用 XmlTextReader 构建 XPathReader,您可以利用 XPath 表达式的便利性获得流式读取的效率。

我没有在 GB 大小的文件上使用过它,但我已经在数十兆字节的文件上使用过它,这通常足以减慢基于 DOM 的解决方案的速度。

引用以下内容:“XPathReader 提供了以流方式对 XML 文档执行 XPath 的能力”。

Download from Microsoft

关于c# - 在 .NET 中如何最好地使用 XPath 处理非常大的 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com