繁体   English   中英

比较两个非常大的XML文件记录的最佳方法

[英]Best way to compare two very large XML files record by record

我有两个大型XML文件(3GB,80000条记录)。 一个是另一个的更新版本。 我想确定哪些记录已更改(已添加/更新/删除)。 文件中有一些时间戳,但我不确定它们是否可以信任。 与文件中的记录顺序相同。

这些文件太大,无法像XML一样加载到内存中(即使是一个,也不要介意两者)。

我正在考虑的方式是在记录级别的第一个文件中使用ID的内存映射进行某种内容偏移的解析/索引,然后流式传输第二个文件并使用随机访问来比较那些记录存在于两者中。 这可能需要2或3次通过,但这很好。 但我找不到容易让我这么做的图书馆/方法。 带有VTDNavHuge的vtd-xml看起来很有趣,但我无法理解(来自文档)它是否支持随机访问重新访问和基于预先保存的位置加载记录。

Java库/解决方案是首选,但C#也是可以接受的。

只需使用SAX或StAX同时解析两个文档,直到遇到差异,然后退出。 它不会将文档保留在内存中。 任何标准XML库都支持S(t)AX。 唯一的问题是如果你认为不同的元素顺序是无关紧要的......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM