gpt4 book ai didi

java - 对大型 xml 文件的随机查询

转载 作者:搜寻专家 更新时间:2023-10-30 21:11:52 24 4
gpt4 key购买 nike

我有一个很大的 xml 文件 (1Gb)。我需要对此 xml 文件进行许多查询(例如使用 xpath)。结果是 xml 的一小部分。我希望查询尽可能快,但 1Gb 文件对于工作内存来说可能太大了。

xml 看起来像这样:

<all>
<record>
<id>1</id>
... lots of fields. (Very different fields per record including (sometimes) subrecords
so mapping on a relational database would be hard).
</record>
<record>
<id>2</id>
... lots of fields.
</record>
.. lots and lots and lots of records
</all>

我需要随机访问,例如使用 key 选择记录。 (Id 是最重要的,但其他字段也可以用作键)。我事先不知道查询,它们到达并且必须尽快执行,不是批量执行而是实时执行。 SAX 看起来不太有前途,因为我不想为每个查询重新读取整个文件。但 DOM 看起来也不是很有前途,因为文件非常大,添加额外的结构开销几乎肯定意味着工作内存无法容纳它。

我可以使用哪个 Java 库/方法来最好地处理这个问题?

最佳答案

处理 XML 时通常有两种方法:流式处理 (SAX) 或将整个文档加载到内存中(各种 DOM 实现)。

如果您可以预先建立一组要批量处理的查询,则可以编写一个程序来使用 SAX 流式传输文件,寻找匹配项。如果查询以随机间隔出现(即典型的数据库应用程序),那么您将需要将整个文档加载到内存中,或者将 XML 文档预处理到某种数据库中。

更好地描述您要完成的任务可能有助于获得更好的答案。

关于java - 对大型 xml 文件的随机查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3196444/

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