0

我想确保 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();

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

4

2 回答 2

2

对文件进行排序和比较有帮助吗?

如果是库,您可以尝试diffxml

XMLUnit有一个diff特性

于 2013-03-06T08:44:38.523 回答
1

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

在这种情况下,构建哈希不是一个好的选择,您可以像这样更轻松地解决它:

  1. 检查文件大小是否相同,如果不同,则不相同。
  2. 打开两个文件的流。
  3. 只需遍历流并停止第一个差异。
  4. 如果没有发现差异,则它们是相同的。

那么为什么不计算哈希值呢?无论如何,您必须读取整个文件才能计算哈希,因此当您比较流时,您可以放弃计算,并且可以停止第一个差异。将文件解析为 DOM 模型也会有同样的缺点。

于 2013-03-06T10:17:58.180 回答