Java XML差异和合并

Java XML差异和合并,java,xml,xslt,merge,diff,Java,Xml,Xslt,Merge,Diff,我想我有一个相当独特的问题要解决。嗯,我用谷歌找不到足够的信息。就这样 我在一个JavaEESOA应用程序上工作,该应用程序使用OracleXMLDB将XML文档存储为XML。每当XML发生更改时,我都会增加版本,并将以前的版本扔到另一个表中 现在的要求是,我应该将两个版本之间的差异存储为XML,而不是整个XML文档 有没有可以进行XML比较的Java库?(XMLUnit,…) 是否有用于捕获XML差异的标准XML模式 我可以使用什么转换技术将“差异”应用于XML,以便在不同版本之间来回转换?(

我想我有一个相当独特的问题要解决。嗯,我用谷歌找不到足够的信息。就这样

我在一个JavaEESOA应用程序上工作,该应用程序使用OracleXMLDB将XML文档存储为XML。每当XML发生更改时,我都会增加版本,并将以前的版本扔到另一个表中

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

  • 有没有可以进行XML比较的Java库?(XMLUnit,…)
  • 是否有用于捕获XML差异的标准XML模式
  • 我可以使用什么转换技术将“差异”应用于XML,以便在不同版本之间来回转换?(XSLT、Groovy……?)

  • 非常感谢您抽出时间。

    有很多用Java编写的开源XML diff工具,您可以从中借鉴。此类工具的一个列表是。

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

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

    当然,文件越大,我们所经历的内存压力就越大,因此我最终编写了一个FileHashMap类,将HashMap的值空间推送到随机访问文件。虽然理论上比较慢,但该解决方案允许我们对非常大的文件进行比较,而不会出现抖动或OutOfMemoryError情况。(此库中提供了该FileHashMap类的版本:)

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


    祝你好运。

    旁注:现在有了一个标准格式的支持XML的“补丁”,在。至少有一个实现它的自由软件程序。它是用C编写的,您可以从Java中调用它。

    尝试使用相当不同的语言。它设计用于在基本XML语法上使用几种不同的扩展


    关于标准格式,您看到了吗?--似乎它比你的问题早了一点——比没有更好的是迟了。嗯,看起来你提供的链接是一个C++库的LIXMLP补丁。命令行工具(和windows二进制)在哪里?