【问题标题】:How to create checksum for an XML file in Java如何在 Java 中为 XML 文件创建校验和
【发布时间】:2010-09-07 15:37:37
【问题描述】:

我需要为 Java 中的 XML 文件创建校验和。基本要求是:

  1. 元素的顺序很重要;
  2. 属性的名称-值对很重要,但属性的顺序并不重要;
  3. 忽略所有空格和 cmets

任何人都可以提供任何提示或示例代码吗?

谢谢, 标记

【问题讨论】:

    标签: java xml checksum


    【解决方案1】:

    您可以使用 Java 数字 XML 签名 API:

    Introduction to the Java Digital XML Signature APIs

    【讨论】:

    • 感谢您的信息。如果我必须坚持使用 Java SE 5,还有其他方法吗?
    【解决方案2】:

    方法一:使用XSLT规范化文档。

    基本上,您将使用 XSLT 来规范化 XML 文档,以便将等价的文档提取到同一个文档中。转换将:

    1. 维护元素顺序
    2. 对每个元素的属性进行排序(例如,根据属性名称按字母顺序排列)
    3. 去除空白和 cmets

    然后您将对文档的规范化版本进行校验和。

    一些有用的参考资料:

    方法2.使用DOM解析器

    1. 使用 DOM 解析器生成 DOM 树
    2. 根据您的规则规范化 DOM 树
    3. 遍历树并将 XML 项输入校验和计算器

    方法 3. 使用 SAX 或 StAX 解析器

    如果您不喜欢生成规范化文档或 DOM 树的中间步骤,您可以使用 SAX 或 StAX 解析 XML 以像上面那样动态维护/排序/条带并提供每个元素/内容/属性/value/etc 到校验和计算器。

    【讨论】:

    • 非常感谢您花时间提供如此详细的答案。真的很感激。
    【解决方案3】:

    查看标准 W3C 标准“c14n”。 + 忽略空格。它甚至会处理命名空间。当然,在你的图书馆里你有一个实现

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2017-07-17
      • 2017-07-01
      • 2021-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多