我想我有一个很独特的问题要解决。嗯,我在谷歌上找不到足够的信息。所以就这样,
我使用Oracle开发了一个Java应用程序,它将XML文档存储为XML。每当XML更改时,我都会增加版本,并将前一个版本抛到另一个表中。
现在的要求是,我应该将两个版本之间的差异存储为XML,而不是整个XML文档。
我很感激你能抽出时间。
发布于 2009-01-10 02:22:56
在我的上一份工作中,我们遇到了一个类似的问题:我们必须在两个XML文件之间检测特定项的更改、插入和删除。这些文件不是任意的XML;它们必须遵守我们的XSD。
我们的解决方案是实现一种合并排序:解析文件(使用SAX解析器,而不是DOM解析器,以允许任意大的文件),并将解析的数据存储在单独的HashMaps中。然后,我们使用合并排序算法对两个映射的内容进行了比较.
当然,文件越大,内存压力就越大,所以我最终编写了一个FileHashMap类,将HashMap的值空间推到随机访问文件。虽然理论上比较慢,但是这个解决方案允许我们的比较处理非常大的文件,而不需要重击或OutOfMemoryError条件。(该FileHashMap类的一个版本可在此库中获得:http://www.clapper.org/software/java/util/)
我不知道我刚才描述的是否完全接近你的需要,但我想我会分享它,以防万一。
祝好运。
发布于 2009-01-12 09:25:14
附带注意:在RFC 5261中,现在有了一种标准的XML感知“补丁”格式。至少有一个免费的软件程序,xmlpatch,实现它。它是用C编写的,您可以从Java调用它。
发布于 2009-01-09 22:43:29
有许多用Java编写的开放源码XML工具,您可以从这些工具开始学习。这类工具的一个列表是这里。
https://stackoverflow.com/questions/430001
复制相似问题