【问题标题】:Change order of xmlns attribute更改 xmlns 属性的顺序
【发布时间】:2014-04-09 14:00:08
【问题描述】:

我知道在 XML 中属性的顺序不应该介意,但在我的特殊情况下,我确实需要与原始 XML 文档的顺序保持一致(例如,正确验证某些 XML 签名)。

我在获取原始文档的某个节点并将该节点的克隆添加到新创建的文档时遇到了一些问题。问题是我正在签署原始节点,该节点在版本属性之前声明了一个命名空间,但是当我再次从代码的其他部分检索该节点时,版本和命名空间声明属性的顺序发生了变化。我希望它们与原始版本保持一致,因为我需要验证签名。这就是现在正在发生的事情:

原始签名文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns0:CF xmlns:ns0="http://someurl.com" version="1.0">
    <ns0:EF>...

要从原始文档验证的节点:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><ns0:CF version="1.0" xmlns:ns0="http://someurl.com">
    <ns0:EF>...

我需要保持 version 和 xmlns 属性的顺序,就像它们出现在原始文档中一样。

我已经尝试了很多东西,但它们似乎都不起作用......谢谢你,原谅我的英语!

【问题讨论】:

  • 生成 XML 签名的工具应该可以处理这样的规范化问题。你是如何生成签名的?
  • 我仍然非常希望 XML 签名是根据信息集而不是其文本表示来定义的,因此不重要的事情(如属性顺序)不会污染签名结果。 .

标签: java xml xml-namespaces


【解决方案1】:

您可以尝试使用 DecentXML: https://code.google.com/p/decentxml/

我曾经使用它来实现一个配置工具,该工具必须在不更改现有格式的情况下更新现有 XML,并且必须以人性化的顺序输出属性。在我的情况下它工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多