【发布时间】:2010-07-08 06:54:19
【问题描述】:
我有一个大的 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>
我需要随机访问,例如使用键来选择记录。 (Id 是最重要的,但其他字段也可以用作键)。我事先不知道查询,它们到达并且必须尽快执行,没有批量执行但实时。 SAX 看起来不太乐观,因为我不想为每个查询重新读取整个文件。但是 DOM 看起来也不是很有希望,因为文件非常大,并且增加额外的结构开销几乎肯定意味着它不适合工作内存。
我可以最好地使用哪个 java 库/方法来处理这个问题?
【问题讨论】:
-
您需要进行什么样的查询?查询是分批的还是按要求进行的?您还可以提供场景的哪些其他特征?
-
+1 用于编辑以清楚地解释问题