我正在创建一个任务来解析两个大的XML文件,并找到元素之间的1-1关系。我完全无法将整个文件保存在内存中,我必须跳过"跳过"在我的文件中检查n ^ 2个组合。
我想知道在不杀死我的机器的情况下,我可以采用什么方法在节点之间导航。我做了一些关于StAX的阅读,我喜欢这个想法,但光标只移动一个方向,我将不得不回去检查不同的可能性。
你可以建议我其他任何可能吗?我需要一个有商业用途的人。答案 0 :(得分:2)
我可能会考虑将第一个文件读入某种结构化缓存,然后读取第二个XML文档,引用此缓存(缓存实际上可能是一个数据库 - 它不需要是在记忆中。)
否则,除非你能将整个文件读入内存,否则没有真正的解决方案(我知道)。这应该更好,而不是在XML文档的DOM中来回传递。
答案 1 :(得分:0)
一种解决方案是XML数据库。这些通常具有良好的连接优化器,以及节省内存,它们可以避免O(n ^ 2)经过的时间。
另一种解决方案是XSLT,使用xsl:key对连接逻辑进行“手动”优化。
如果您更详细地解释逻辑,可能会有使用XSLT 3.0流的其他解决方案。