当前位置:  开发笔记 > 编程语言 > 正文

XML Diff和Merge

如何解决《XMLDiff和Merge》经验,为你挑选了2个好方法。

我想我有一个相当独特的问题需要解决.好吧,我无法使用谷歌找到足够的信息.所以在这里,

我在Java EE SOA应用程序上工作,该应用程序使用Oracle XML DB将XML文档存储为XML.每当XML发生变化时,我都会增加版本并将以前的版本放到另一个表中.

现在的要求是,我应该将两个版本之间的差异存储为XML,而不是整个XML文档.

    有没有可以进行XML比较的Java库?(XMLUnit,......?)

    是否有用于捕获XML差异的标准XML模式?

    我可以使用哪种转换技术将"差异"应用于XML以在版本之间来回切换?(XSLT,Groovy,......?)

我很感激你的时间.



1> Brian Clappe..:

在我上一份工作中,我们遇到了类似的问题:我们必须检测两个XML文件之间特定项的更改,插入和删除.这些文件不是任意的XML; 他们必须坚持我们的XSD.

我们的解决方案是实现一种合并排序:解析文件(使用SAX解析器,而不是DOM解析器,允许任意大的文件),并将解析的数据存储在单独的HashMaps中.然后,我们使用合并排序类型的算法比较两个地图的内容.

当然,文件越大,我们遇到的内存压力就越大,所以我最终编写了一个FileHashMap类,将HashMap的值空间推送到随机访问文件.虽然理论上速度较慢,但​​这种解决方案允许我们比较使用非常大的文件,而不会出现颠簸或OutOfMemoryError条件.(该库中提供了该FileHashMap类的一个版本: http //www.clapper.org/software/java/util/)

我不知道我刚刚描述的内容是否与您需要的内容非常接近,但我想我会分享它,以防万一.

祝好运.



2> bortzmeyer..:

附注:在RFC 5261中,现在有一种标识格式的XML感知"补丁" .至少有一个实现它的免费软件程序xmlpatch.它是用C语言编写的,您可以从Java中调用它.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有