首页 > 解决方案 > 如何迭代更新不适合内存的 xml 文件?

问题描述

我有一个 10GB 的 xml 文件,它是从 en-wikipedia-articles-pages-latest.xml 文件中解析出来的。我的 10GB xml 文件包含在其中某处(在文本中)包含“足球”一词的 xml 元素。现在我的目标是创建一个新的输出 xml 文件,其中仅包含多年来的球员姓名及其对应的球队。假设我遇到了 Lionel Messi 页面,我解析了包含我需要的信息的信息框,最后将其写入 xml 文件。问题是我可能会遇到一个不知名的足球运动员,或者一个关于足球运动员的页面有一个旧的/损坏的信息框。然后我遇到了一个足球队,其中包含有关这名未知足球运动员的信息,但信息框已损坏。新输出 xml 中的数据已写入,但应被此新信息覆盖。我的问题是我不能 t 将新的输出 xml 作为对象保存在内存中,因为它太大了。再说一次,我不想顺序扫描新的输出 xml 文件并尝试寻找具体的条目。我的问题是是否存在关于如何处理这种情况的一般方法。

标签: xmllarge-datalarge-files

解决方案


一种方法是将整个内容放入 XML 数据库中,例如 eXistDB 或 BaseX。

另一种方法是将工作组织为流转换的管道(例如使用 XSLT 3.0)。这是相当多的工作,但最终会更快。


推荐阅读