gpt4 book ai didi

xml - 使用 MD5/SHA1 比较 XML 实例

转载 作者:数据小太阳 更新时间:2023-10-29 02:54:24 25 4
gpt4 key购买 nike

我最近试图找出比较两个大型 XML 文档的最快方法,一位同事建议对它们进行散列处理,然后只比较散列字符串。

起初这似乎是一个显而易见/绝妙的想法!但后来我本能地告诉我,这可能“好得令人难以置信”。

就像序列化 POJO 进行比较/克隆被广泛认为是“不好的做法”一样,这种技术也是如此吗?为什么或者为什么不?注意事项/陷阱等?

最佳答案

首先让我说 XML 比较是棘手的。这很棘手,因为正如您在问题标题中所说的那样,您正在比较 XML 实例。

XML 不仅仅是您可以比较以查看是否存在差异的内容(文本文件、二进制文件等); XML 具有含义,不同的 XML 实例可以具有相同的含义。

例如,考虑这个 XML 示例:

<sample a="foo" b="bar" />

和这个有什么不同吗?

<sample b='bar' a='foo' />

或者这个:

<sample 
a="foo"
b="bar" />

甚至这个?:

<sample a="foo" b="bar"></sample>

答案是样本都是相等的。但是,如果您对每一个进行哈希处理,每次都会得到不同的哈希值。

如果要散列 XML 实例并使用散列进行比较,首先必须将它们放入 a canonical form 中.如果 XML 不经常更改,您可以将散列与 XML 一起存储,然后只比较散列。仅当某些内容发生变化时才计算消息摘要。这可能非常快。

另一个解决方案也是 an XSLT转换并使用两个 XML 实例作为输入。然后,您输出更简单的内容(可能是包含所有元素和属性名称和值的平面文件),比较简单。

lots of ways to compare XML文件和评论中提到的@violet313,这实际上取决于你为什么要进行比较以及你到底想比较什么。

关于xml - 使用 MD5/SHA1 比较 XML 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com