簡體   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