如何检查XML文件中的更改?

时间:2013-03-06 08:43:12

标签: java xml hash

我想确保2个XML文件是相同的,我看到的2个选项是。  1.获取XML以及时间的最后修改日期,并检查是否相同。问题是有人可能忘记改变它然后它是无用的。  2.创建xml文件/结构的哈希码。

我在java中使用了库中的构建,但是哈希实现可以在运行之间更改,这是没有用的

File model = new File(fileLocation);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(model);
doc.getHash();

有一种简单的方法可以做到这一点,并希望不导入另一个库。

2 个答案:

答案 0 :(得分:2)

会对文件进行排序并比较帮助吗?

如果是图书馆, 您可以尝试diffxml

XMLUnitdiff功能

答案 1 :(得分:1)

正如Martin Thurau所指出的,这取决于您是要检查文件是否相同,或者XML内容是否相同。这个答案仅适用于第一种情况,当你想知道两个文件是否相同时,我认为这是你的问题,因为你提出了一个哈希值。

在这种情况下,构建哈希不是一个好的选择,你可以更容易地解决它:

  1. 检查文件大小是否相同,否则它们不相同。
  2. 打开两个文件的流。
  3. 只需循环通过溪流,然后停在第一个区别。
  4. 如果找不到差异,则相同。
  5. 那为什么不计算哈希值呢?无论如何你必须读取整个文件来计算哈希值,所以当你比较流时你可以放弃计算,你可以停止第一个差异。将文件解析为DOM模型也具有相同的缺点。