java - 更改 xmlns 属性的顺序

标签 java xml xml-namespaces

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

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

原始签名文档:

<?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>...

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

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

最佳答案

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

我曾经用它来实现一个配置工具,该工具必须在不更改现有格式的情况下更新现有的 XML,并且必须以人性化的顺序输出属性。它在我的案例中非常有效。

关于java - 更改 xmlns 属性的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964949/

相关文章:

Java 小程序线程动画

java - App Engine 和多个管理员用户?

java - 在枚举中使用对象(特别是在 GWT 中放置)

xml - 创建 xmlns :xsi namespace and attribute

java - android xml 意外的命名空间前缀

java - 如何从用户输入的短语中输出特定字母

java - 将 XML 解析/反序列化为 JavaObjects

javascript - 我需要来自命名节点映射的值

java - WSDL 客户端中的 CDATA 元素

python - 命名空间与 lxml etree 发生冲突